我想要的是如果勾选复选框(我使用CellContentClick事件) 我想显示一个messageBox,如果用户按下确定..然后选中复选框并开始新查询。否则按Annul或关闭Messagebox - >未选中的复选框。
但是我有一个问题要实现..
private void dgvApprovazione_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
try
{
if (dgvApprovazione.Rows[e.RowIndex].Cells[e.ColumnIndex] is DataGridViewCheckBoxCell)
{
CheckBox checkboxTmp = sender as CheckBox;
checkboxTmp.AutoCheck = false;
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
EDIT --- 我无法访问设计窗口。 Checkbox是一个dinamyc列,是读取DB的结果。 DB中的字段是真/假类型。在datagridview中,我有复选框,带有check或uncheck。
我希望捕获并阻止'代码时间'中的自动检测
答案 0 :(得分:1)
您可以在启动时或使用列的ReadOnly
属性添加列时使列只读,然后处理CelllContextClick
并显示消息框并根据基础设置单元格的值消息框结果:
private void Form1_Load(object sender, EventArgs e)
{
//Load data
//Add columns
//I suppose your desired coulmn is at index 0
this.dataGridView1.Columns[0].ReadOnly = true;
}
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
//I suppose your desired coulmn is at index 0
if (e.ColumnIndex == 0 && e.RowIndex >= 0)
{
var result = MessageBox.Show("Check Item?", "", MessageBoxButtons.YesNoCancel);
if (result == System.Windows.Forms.DialogResult.Yes)
{
((DataGridView)sender)[e.ColumnIndex, e.RowIndex].Value = true;
}
else
{
((DataGridView)sender)[e.ColumnIndex, e.RowIndex].Value = false;
}
}
}
单元格中没有真正的CheckBox
,事件的发件人为DataGridView
。