C# 如何允许以编程方式编辑datagridview?
我有一个连接到数据库的datagridview。我有一个复选框,用于在datagridview中编辑数据。如果选中该复选框,则只能编辑datagridview的1列,编辑后,单击“保存”按钮将其反映在数据库中,如果未选中该复选框,则禁用编辑C# 如何允许以编程方式编辑datagridview?,c#,datagridview,C#,Datagridview,我有一个连接到数据库的datagridview。我有一个复选框,用于在datagridview中编辑数据。如果选中该复选框,则只能编辑datagridview的1列,编辑后,单击“保存”按钮将其反映在数据库中,如果未选中该复选框,则禁用编辑 dataGridView1.Columns[0].ReadOnly = true; dataGridView1.Columns[1].ReadOnly = false; 我试过这样的方法: private void checkBox
dataGridView1.Columns[0].ReadOnly = true;
dataGridView1.Columns[1].ReadOnly = false;
我试过这样的方法:
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
if (checkBox1.CheckState == CheckState.Checked)
{
dataGridView1.CurrentRow.ReadOnly = false;
dataGridView1.EditMode = DataGridViewEditMode.EditOnKeystrokeOrF2;
}
else if (checkBox1.CheckState == CheckState.Unchecked)
{
dataGridView1.ReadOnly = true;
}
}
此代码忽略了选择要编辑的列的概念。要执行所需操作,必须仅设置要禁用的列
dataGridView1.Columns[0].ReadOnly = true;
dataGridView1.Columns[1].ReadOnly = false;
但是,你想这样做吗?阻止整个列?您可以尝试
if(dataGridView1.SelectedCells.Count>0) dataGridView1.SelectedCells[0].ReadOnly=false;
而不是
dataGridView1.CurrentRow.ReadOnly=false;
for(int i=0;i仅当datagridview自身的只读属性设置为false时,本节中提供的帮助才有效。如果不是,则每列的只读属性将保持不变。当您使用智能标记选择并启用“使网格可编辑”时然后readonly属性被设置为false。另外,在新一代网格中的好处是,您不必像中那样查找列
foreach (var col in grid1.columns)
您可以将列的名称用作所选或默认的“column1.ReadOnly=false”。枚举器当然有它自己的优点。OK。您的复选框控制数据是否可以编辑,对吗?但您也希望人们选择要编辑的列?他们应该如何在UI中进行编辑?