2016-03-21 27 views
1

我想將GotFocus事件添加到Windows窗體文本框中,因此我使用this問題中描述的方法;它可以工作,但是在我運行我的應用程序幾次之後,代碼片段會自行刪除,我不知道爲什麼。爲什麼GotFocus事件不斷從Designer中刪除自己?

這是一個不斷刪除自身代碼:

txtID.GotFocus += txtID_GotFocus; 
+0

爲什麼你把它放在設計器而不是你的代碼? – Shaharyar

+0

由於驗證事件在我將它們放入設計器中時工作得很好,所以我假設了gotfocus事件也會發生。我將把它放在代碼本身並分享結果,謝謝。 – jmcc

+0

@jmcc把這件作品放在代碼中,而不是設計師。 –

回答

2

它消失了,因爲您不使用WinForms設計器在添加事件處理程序時使用的約定。

無論您使用GotFocus還是Enter事件都無關緊要。如果你(在你的Designer.cs)手動添加事件處理程序是這樣的:

txtID.Enter += txtID_Enter; 

那就總是從設計師的下一次消失你移動設計表面的控制。

您必須添加事件處理程序是這樣的:

txtID.GotFocus += new System.EventHandler(txtID_Focus); 
txtID.Enter += new System.EventHandler(txtID_Enter); 

,並沒有什麼會消失,因爲它的設計者希望這個代碼是這樣。

+0

原因是您所說的。 –

2

當然這是爲什麼你不應該接觸設計器生成的代碼,並要注意這個警告又一佐證:do not modify the contents of this method with the code editor.

作爲一種變通方法使用Enter事件(建議)。您也可以在表單的Load事件中分配處理程序。

編輯
究其原因,正確地nikita提到的,那是因爲你沒有使用設計師約定。欲瞭解更多信息,請參閱他的answer

相關問題