【发布时间】:2023-02-22 04:49:44
【问题描述】:
如何检测更改事件SelectedIndexChanged()是否由人完成(点击次数) 或以编程方式?
private void MyComboBox_MouseDown(object sender, MouseEventArgs e)
{
Console.WriteLine("MouseDown...");
}
private void MyComboBox_MouseUp(object sender, MouseEventArgs e)
{
Console.WriteLine("MouseUp...");
}
private void MyComboBox_SelectionChangeCommitted(object sender, EventArgs e)
{
Console.WriteLine("SelectionChangeCommitted...");
}
private void MyComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
Console.WriteLine("SelectedIndexChanged... By Human or Programmatically?");
}
笔记
- 单击事件does not get fired on ComboBox items,但仅当您单击 ComboBox 本身时。
- 我有数百个以编程方式更改 ComboBox 的函数调用,因此很难在每个调用上添加一个标志。
如何知道事件 SelectedIndexChanged() 是人为还是程序化?
【问题讨论】:
-
究竟为什么您需要区分更改是如何进行的?你想回答什么问题?
-
有一个
UpdateServer()函数在IndexChanged事件被触发时被调用,问题是我们不希望在人类进行更改时调用该函数。 -
这些 ComboBoxes 是否在屏幕上出现表单后以编程方式更改?如果没有,那么您可以在加载表单后设置一个标志。
-
“以编程方式”到底是什么意思?应用程序将运行,项目将加载到组合框,并且选定的索引将以编程方式更改而无需人工交互?
-
SelectionChangeCommitted在SelectedIndexChanged之前被调用。您可以在调用前者时设置一个标志,这样您就知道更改是由用户操作引起的。没有设置标志,在代码中完成