防止在DataGridView中选择单元格

本文关键字:选择 单元格 DataGridView | 更新日期: 2023-09-27 18:06:47

我对DataGridView没有什么问题。
1. 在表单上删除DataGridView控件并将属性Visible设置为False
2. 添加几行并将visible更改为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事件。
如何预防呢?

编辑。解决方案:

  • 分离事件处理程序:
  • 设置可见
  • 明确选择
  • <
  • 添加处理程序/gh>

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

防止在DataGridView中选择单元格

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

认为,

设置DataGridView的TabStop为false

如果可见性为假,您是否可以不从方法返回,而不是每次更改可见属性时都重新连接。即:

private void dataGridView1_SelectionChanged(object sender, EventArgs e)
{
    if (!dataGridView1.Visible) return;
    Console.WriteLine("selected");
}