Windows Froms DataGridView控件中的CellClick事件和SelectionChanged事件有什么区别?
当确切选择更改事件时:在表单加载事件之前或之后?
答案 0 :(得分:6)
此类问题的最佳参考是MSDN DataGridView文档。
对于CellClick事件,他们说:
单击单元格的任何部分(包括)时会发生此事件 边框和填充。当用户按下并释放时也会发生这种情况 按钮单元格或复选框单元格具有焦点时的SPACE键,和 如果单击单元格,则会对这些单元格类型出现两次 按空格键。
对于SelectionChanged事件:
每当选择单元格或选择单元格时,都会发生此事件 取消,无论是以编程方式还是通过用户操作。例如, 当您想要显示当前的总和时,此事件非常有用 选定的细胞。
明显不同的是,即使DataGridView选择没有改变,CellClick也可以触发,例如右键单击或单击当前选定的单元格。此外,选择可以在不单击单元格的情况下更改,例如,当您以编程方式更改选择时。
至于什么时候选择更改事件是相对于表单加载事件运行的,当它在表单构造函数中附加时,它就在之前(并且在那几次!)。
我刚用以下代码证明了这一点:
public Form1()
{
InitializeComponent();
MyBindingList<BackingObject> backing_objects = new MyBindingList<BackingObject>();
backing_objects.Add(new BackingObject{ PrimaryKey = 1, Name = "Fred", Hidden = "Fred 1"});
dataGridView1.DataSource = backing_objects;
this.Load += new EventHandler(Form1_Load);
dataGridView1.SelectionChanged += new EventHandler(dataGridView1_SelectionChanged);
}
void Form1_Load(object sender, EventArgs e)
{
Console.WriteLine("Load");
}
void dataGridView1_SelectionChanged(object sender, EventArgs e)
{
Console.WriteLine("Selection Changed");
}
输出窗口显示:
Selection Changed
Selection Changed
Selection Changed
Load
请注意,您可以通过在DataBindingComplete事件处理程序中附加
来在加载事件后更改选项。dataGridView1.DataBindingComplete += new DataGridViewBindingCompleteEventHandler(dataGridView1_DataBindingComplete);
void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
dataGridView1.SelectionChanged += new EventHandler(dataGridView1_SelectionChanged);
}
现在在输出窗口中,您只看到:
Load
在更改网格选择(例如单击单元格)之前,没有选择更改输出