110,539
社区成员
发帖
与我相关
我的任务
分享
那你要判断了
用那个CellMouseClick事件就可以
private void dataGridView1_CellMouseClick(....)
{
if(dataGridView1.SelectedRows[0].ColIndex=1)//如果鼠标放在“读写”这一列
{
if(dataGridView1.SelectedRows[0].Cells[1].value.ToString().Equals("False"))
{
dataGridView1.SelectedRows[0].Cells[1].Value=true;
}
else
{
if(dataGridView1.SelectedRows[0].cells[2].Value.ToString.Equals("true")||dataGridView1.SelectedRows[0].cells[3].Value.ToString.Equals("true"))
{
dataGridView1.SelectedRows[0].Cells[1].Value=false;
}
}
}
if(dataGridView1.SelectedRows[0].ColIndex=2)//如果鼠标放在“只读”这一列
{
if(dataGridView1.SelectedRows[0].Cells[2].value.ToString().Equals("False"))
{
dataGridView1.SelectedRows[0].Cells[2].Value=true;
}
else
{
if(dataGridView1.SelectedRows[0].cells[1].Value.ToString.Equals("true")||dataGridView1.SelectedRows[0].cells[3].Value.ToString.Equals("true"))
{
dataGridView1.SelectedRows[0].Cells[2].Value=false;
}
}
}
if(dataGridView1.SelectedRows[0].ColIndex=3)//如果鼠标放在“隐藏”这一列
{
if(dataGridView1.SelectedRows[0].Cells[3].value.ToString().Equals("False"))
{
dataGridView1.SelectedRows[0].Cells[3].Value=true;
}
else
{
if(dataGridView1.SelectedRows[0].cells[1].Value.ToString.Equals("true")||dataGridView1.SelectedRows[0].cells[2].Value.ToString.Equals("true"))
{
dataGridView1.SelectedRows[0].Cells[3].Value=false;
}
}
}
}
// 加入 Form_Load 事件中
bool hide, read, write;
hide = false; read = false; write = false;
// 要改为程序程序中对应列名
string h, r, w, col;
h = "hide"; r = "read"; w = "write"; col = "";
this.dataGridView1.RowEnter += (obj, args) =>
{
DataGridView dgv = obj as DataGridView;
// 获取原值
try
{
hide = (bool)(dgv[h, args.RowIndex].Value);
read = (bool)(dgv[r, args.RowIndex].Value);
write = (bool)(dgv[w, args.RowIndex].Value);
}
catch
{
hide = false; read = false; write = false;
}
};
this.dataGridView1.CancelRowEdit += (obj, args) =>
{
DataGridView dgv = obj as DataGridView;
if (dgv.CurrentRow != null)
{
int index = dgv.CurrentRow.Index;
if (!dgv[h, index].Value.Equals(hide)) dgv[h, index].Value = hide;
if (!dgv[r, index].Value.Equals(hide)) dgv[r, index].Value = read;
if (!dgv[w, index].Value.Equals(hide)) dgv[w, index].Value = write;
}
};
this.dataGridView1.CellContentClick += (obj, args) =>
{
DataGridView dgv = obj as DataGridView;
switch (dgv.Columns[args.ColumnIndex].Name)
{
case "hide": col = "hide"; break;
case "read": col = "read"; break;
case "write": col = "write"; break;
default: break;
}
if (col == "") return;
DataGridViewCheckBoxCell cell =
dgv[col, args.RowIndex] as DataGridViewCheckBoxCell;
if (cell.EditingCellValueChanged && cell.EditedFormattedValue.Equals(true))
{
if (col != h) dgv[h, args.RowIndex].Value = false;
if (col != r) dgv[r, args.RowIndex].Value = false;
if (col != w) dgv[w, args.RowIndex].Value = false;
}
};