我对 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/