VuS*_*ate 1 c# events datagridview winforms
Windows Froms DataGridView控件中的CellClick事件和SelectionChanged事件有什么区别?
当确切的选择更改事件运行时:在表单加载事件之前或之后?
这类问题的最佳参考是MSDN DataGridView文档.
对于CellClick事件,他们说:
单击单元格的任何部分(包括边框和填充)时会发生此事件.当按钮单元格或复选框单元格具有焦点时,用户按下并释放SPACE键时也会发生这种情况,如果在按下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");
}
Run Code Online (Sandbox Code Playgroud)
输出窗口显示:
Selection Changed
Selection Changed
Selection Changed
Load
Run Code Online (Sandbox Code Playgroud)
请注意,您可以选择改变火灾后由DataBindingComplete事件处理期间,将其附着Load事件.
dataGridView1.DataBindingComplete += new DataGridViewBindingCompleteEventHandler(dataGridView1_DataBindingComplete);
void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
dataGridView1.SelectionChanged += new EventHandler(dataGridView1_SelectionChanged);
}
Run Code Online (Sandbox Code Playgroud)
现在在输出窗口中,您只看到:
Load
Run Code Online (Sandbox Code Playgroud)
并且在更改网格选择之前没有选择更改输出(例如通过单击单击)
| 归档时间: |
|
| 查看次数: |
8646 次 |
| 最近记录: |