c# - 防止在 DataGridView 中选择单元格

标签 c# .net winforms datagridview selection

我对 DataGridView 没有什么问题。
1. 将 DataGridView 控件拖放到窗体上并将属性 Visible 设置为 False
2. 添加几行并将可见更改为 True,如上面的代码。

private void Form1_Load(object sender, EventArgs e)
{
   dataGridView1.Rows.Add(new object[] { "1", "a" });
   dataGridView1.Rows.Add(new object[] { "2", "b" });
   dataGridView1.Rows.Add(new object[] { "3", "c" });
   dataGridView1.Rows.Add(new object[] { "4", "d" });

   dataGridView1.Visible = true;
               //^ this trigger selection

}

private void dataGridView1_SelectionChanged(object sender, EventArgs e)
{
   Console.WriteLine("selected");
}

设置 Visible 为 True 后,第一个单元格被自动选中并触发 SelectionChanged 事件。
如何预防?

编辑。解决方案:

  • 分离事件处理程序:
  • 设置可见
  • 清除选择
  • 添加处理程序

dataGridView1.SelectionChanged -= dataGridView1_SelectionChanged;
dataGridView1.Visible = true;
dataGridView1.ClearSelection();
dataGridView1.SelectionChanged += dataGridView1_SelectionChanged;

最佳答案

您的解决方案将阻止事件触发,但我认为在显示网格时仍会选择第一个单元格。在 DataGridView 上简单调用 ClearSelection() 应该可以解决这个问题。

问候,德鲁

关于c# - 防止在 DataGridView 中选择单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7203336/

相关文章:

c# - 如何从数据表中删除一行?

c# - System.Math.Abs​​() 调用 native 方法 System.AppDomain.GetId()?

c# - 更新后无法构建 .NET Core 项目

.net - 只能对属于 DataGridView 控件的单元格执行操作

c# - 数据绑定(bind)如何与 DataTable 一起工作?

C# 在某行开始读取文件

c# - Windows 窗体中的动画 GIF,同时执行长进程

c# - 是否可以为线程池中的线程指定一个临时名称?

.net - 文件夹重定向处于事件状态时解析 'Environment.SpecialFolder.Personal'

c# - 在 RichTextBox 中对齐数字