我对DataGridView没有什么问题
1.在表单上删除DataGridView控件并将属性设置为Visible to 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;
答案 0 :(得分:3)
您的解决方案将阻止事件触发,但我认为在显示网格时仍将选择第一个单元格。在DataGridView上对ClearSelection()的简单调用应该可以解决这个问题。
问候,德鲁
答案 1 :(得分:1)
将DataGridView的TabStop设置为false
答案 2 :(得分:0)
如果可见性为false,您可以在每次更改可见属性时进行布线和重新布线,而不是从方法返回。那就是:
private void dataGridView1_SelectionChanged(object sender, EventArgs e)
{
if (!dataGridView1.Visible) return;
Console.WriteLine("selected");
}