我有一个DataGridView,它工作得非常好。我用它来显示数据。
现在我希望能够通过复选框选择行,并且仅在单击按钮时对所选行执行操作(此按钮在同一表单上的网格之外)。 为此,我按照these步骤将复选框列添加到datagridview。
在运行应用程序时看到的是我无法通过鼠标单击或键盘选中复选框。通过它的外观,我可以理解它不是处于禁用/只读状态。因此,每当我尝试单击复选框时,它会正常更改它的边框,因为启用了复选框。但最后它没有勾选复选框。
答案 0 :(得分:3)
试试吧。
private void Form1_Load(object sender, EventArgs e)
{
DataGridViewCheckBoxColumn ck = new DataGridViewCheckBoxColumn();
dataGridView1.Columns.Insert(0,ck);
}
可以帮到你。
Ismail 此处是您混淆的解决方案Dgv-DatabindingCompleteEvent
答案 1 :(得分:1)
如果要检查dgv中所有复选框的状态:
foreach (DataGridViewRow row in dataGridView1.Rows)
{
DataGridViewCheckBoxCell chk = row.Cells[0] as DataGridViewCheckBoxCell;
if (Convert.ToBoolean(chk.Value) == true)
MessageBox.Show("this cell checked");
}
答案 2 :(得分:1)
我遇到了同样的问题。对我来说,解决方案非常简单。我的datagridview有一个禁用的编辑选项(因为我不希望用户更改数据),我希望能够检查/取消选中我的DataGridViewCheckBoxColumn。所以在dataGridView属性中我检查了“启用编辑”选项,但在代码中我已经为除了我想要的checkBoxColumn之外的每一列禁用了它。 希望它会对某人有所帮助。
答案 3 :(得分:0)
在我的情况下,我在page_load中有gridview加载代码,因此在单击按钮后重新加载了网格并丢失了选择。因此,将代码移入内部
if(!isPostback)
{ LoadGrid();}
为我工作。
在page_load中放置一个断点以更好地理解。