2010-08-11 65 views
4

在VS2008中,如果我雙擊事件處理程序,VS會創建一個默認名稱的默認事件處理程序,例如, combobox1_SelectedIndexChanged。在C#中,如何輕鬆更改事件處理程序的名稱?

舉個例子,我現在把combobox1重命名爲cbStatus。它仍然具有相同的事件處理程序,所以我現在將其更改爲cbStatus_SelectedIndexChanged。

有沒有一種方法,其中VS可以將初始的combobox1_SelectedIndexChange更改爲cbStatus_SelectedIndexChange,而不是除舊的事件處理程序之外還生成新的cbStatus事件處理程序?因爲每次我必須將代碼剪切並粘貼到新的事件處理程序,然後刪除舊的。另外,如果我定義了初始事件處理程序,然後不再需要處理程序,那麼我不能簡單地從代碼中刪除處理程序,因爲表單設計器會抱怨它找不到原始事件處理程序。有沒有辦法讓VS自動從窗體設計器中刪除事件處理程序的分配?

我似乎花費整天剪切和粘貼,並從窗體設計器代碼中刪除事件處理函數賦值。

回答

10

當您重命名的控制,你也應該重新命名事件處理程序。正確的做法是通過重構的代碼。

要做到這一點,只需右鍵單擊在Visual Studio代碼編輯器中的事件處理程序的名稱,並選擇Refactor -> Rename...這將讓你自動改變它的使用它到處名稱。

在事件處理程序的情況下,它可能只用於另一個地方(它添加到事件中的代碼點),因此手動更改它並不會太麻煩。你可以將這種技術應用於任何事情,但是,當你正在改變的東西是從幾個不同的地方引用時,使它非常有用。

+0

杜。我從來沒想過這點。男孩現在感到啞巴。在這裏,我一直在破壞我的代碼,編譯它,然後修復它。謝謝,+1。 – David 2010-08-11 03:00:58

0

如果您單擊而不是雙擊來自動創建事件處理程序,則可以指定所需的處理程序名稱。你可以使它像「SelectedStatusChangedHandler」一樣,它獨立於組合框的變量名。然後按'enter'讓VS爲你創建處理程序。

1

只需鍵入新名稱,然後重新編譯。我的意思是 - 改變

protected void combobox1_SelectedIndexChanged(object sender, EventArgs e) 
{ 

} 

protected void renamedcombobox_SelectedIndexChanged(object sender, EventArgs e) 
{ 

} 

,然後重新編譯

Visual Studio將拋出一個編譯時錯誤,因爲預計該方法就不再出現了。

雙擊Output窗口中的錯誤以轉到錯誤處理程序的分配,並在那裏更改錯誤處理程序以匹配新的函數名稱。

編輯 - 添加

上述步驟會跳到你的在賈斯汀的回答中描述的代碼行...

末編輯

我知道這是明確的泥,但嘗試一下,你會發現很少或沒有困難。

+0

我喜歡這種方式,特別是如果你沒有resharper。 – KyloRen 2017-02-13 10:10:31

2

您只需在生成的代碼中找到combobox1_SelectedIndexChange方法聲明的位置,並將名稱更改爲cbStatus_SelectedIndexChange即可。

在更改方法名,你也必須更新,你註冊的處理程序行:

cbStatus.SelectedIndexChange += new 
    SelectedIndexChangeEventHandler(cbStatus_SelectedIndexChange); 
相關問題