在DataGridView中禁用编辑

时间:2016-08-09 06:38:23

标签: c# winforms visual-studio datagridview

我正在使用Visual Studio 2012.我想禁用DataGridView上的编辑,它似乎在我使用此代码时有效:

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
    dataGridView1.ReadOnly = true;
}

但是当我返回菜单表单然后返回DataGridView所在的表单时,现在可以编辑它。我只定义

dataGridView1.ReadOnly = true;

到这个表格。我不知道这个问题是什么。有人可以帮忙吗?感谢。

这是我进入菜单按钮的代码

Menu menu = new Menu();
this.Hide();
menu.ShowDialog();

我的按钮返回DataGrid:

FrmList frmlist = new FrmList();
frmlist.Show();
this.Hide();

4 个答案:

答案 0 :(得分:12)

为什么不尝试在DataGridView的“属性”窗口中将localStorage : MessageCount : "[{"id":"user_abc-com","MsgCount":8},{"id":"user2_abc-com","MsgCount":16}]" 属性设置为 True

修改

双击表单并在设计窗口中,选择DataGridView并打开“属性”选项卡。向下滚动属性,您将看到ReadOnly选项。将其值更改为 True

您在ReadOnly事件中设置了ReadOnly属性,该属性仅在用户点击网格单元格时执行。因此,当您创建这样的表单的新对象时,

CellContentClick

它只会在设计器中设置FrmList frmlist = new FrmList(); 的情况下创建表单的新实例。由于默认情况下Properties属性设置为false,并且您编写的将其设置为true的代码未执行,因此DataGridView将是可编辑的。

答案 1 :(得分:0)

  

价:

DataGridView read only cells

this.dgridvwMain.Rows[index].Cells["colName"].ReadOnly = true;

答案 2 :(得分:0)

检查表单是否在导航时重新初始化。您可以在构造函数中设置断点。这取决于您的导航服务,或者它是如何实现的。在这种情况下,您可以将ReadOnly标志设置为初始化时的最后一个值,或将其实现为单例。

答案 3 :(得分:0)

使整个DataGridView只读。 有关更多信息,请访问MSDN

private void Button8_Click(object sender, System.EventArgs e)
{
    foreach (DataGridViewBand band in dataGridView.Columns)
    {
        band.ReadOnly = true;
    }
}