我在窗體上有一堆控件,所有的「更改」事件都指向同一個事件處理程序。其中一些是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