我有一个运行良好的 DataGridView。我只是用它来显示数据。
现在我希望能够通过复选框选择行并在单击按钮时仅对选定行执行操作(此按钮不在同一表单的网格中)。为此,我按照这些步骤将复选框列添加到 datagridview。
在运行应用程序时看到的是我无法通过鼠标单击或键盘检查该复选框。通过它的外观,我可以理解它不是处于禁用/只读状态。因此,每当我尝试单击复选框时,它通常会像启用的复选框一样更改其边框。但最后它没有选中复选框。
我有一个运行良好的 DataGridView。我只是用它来显示数据。
现在我希望能够通过复选框选择行并在单击按钮时仅对选定行执行操作(此按钮不在同一表单的网格中)。为此,我按照这些步骤将复选框列添加到 datagridview。
在运行应用程序时看到的是我无法通过鼠标单击或键盘检查该复选框。通过它的外观,我可以理解它不是处于禁用/只读状态。因此,每当我尝试单击复选框时,它通常会像启用的复选框一样更改其边框。但最后它没有选中复选框。
试试看。
private void Form1_Load(object sender, EventArgs e)
{
DataGridViewCheckBoxColumn ck = new DataGridViewCheckBoxColumn();
dataGridView1.Columns.Insert(0,ck);
}
可以帮助你。
Ismail这里是您的困惑Dgv-DatabindingCompleteEvent的解决方案
我遇到了同样的问题。对我来说,解决方案非常简单。我的 datagridview 有一个禁用的编辑选项(因为我不希望用户更改数据)并且我希望能够选中/取消选中我的 DataGridViewCheckBoxColumn。因此,在 dataGridView 属性中,我检查了“启用编辑”选项,但在代码中,除了我想要的 checkBoxColumn 之外,我已经为每一列禁用了它。希望它对某人有所帮助。
如果要检查 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");
}
就我而言,我在 page_load 中有 gridview 加载代码,因此在单击按钮后,网格正在重新加载并丢失其选择。所以将代码移到里面
if(!isPostback)
{ LoadGrid();}
为我工作。
在 page_load 中放置一个断点以便更好地理解。