我在窗体上有一堆控件,所有的“更改”事件都指向同一个事件处理程序。其中一些是txtInput1的TextChanged,chkOption1的CheckedChanged和cmbStuff1的SelectedIndexChanged。这里是事件处理程序:如何确定事件是由用户操作还是由代码触发的?
private void UpdatePreview(object sender, EventArgs e)
{
// TODO: Only proceed if event was fired due to a user's clicking/typing, not a programmatical set
if (sender.IsSomethingThatTheUserDid) // .IsSomethingThatTheUserDid doesn't work
{
txtPreview.Text = "The user has changed one of the options!";
}
}
我想,如果当用户改变文本框的文本或点击复选框或任何声明,只运行。如果文本或复选框被程序的其他部分更改,我不希望发生这种情况。
我可以发誓我刚刚回答了一个完全像这样的问题... – 2010-06-23 17:21:25
这是它。它不完全重复,但答案仍然相同:http://stackoverflow.com/questions/3071811/listbox-selectedindexchanged-can-you-determine-if-it-was-user-intiated/3071856 – 2010-06-23 17:23:48
Can当你声明“如果文本或复选框被程序的其他部分改变了,我不希望它发生”,那么你就澄清了你的意思。 – Doug 2010-06-23 17:24:07