2015-06-13 87 views
2

我在VSTO插件中有一個表單。我想註冊FormX_RowLeave()方法。自從我使用視覺設計師以來,我註冊了這樣的功能。如何註冊RowLeave事件

this.clientsProjectHistoryDataGridView.CellLeave += new System.Windows.Forms.DataGridViewCellEventHandler(this.clientsProjectHistoryDataGridView_CellLeave); 

但我不知道如何用RowLeave做到這一點。我找不到任何示例或在文檔中找到它。我在文檔中找到了該方法,但未註冊如何註冊事件處理程序。我試過使用visual studio的功能來顯示可用的方法或對象來查找應用於RowLeave的DataGridViewXXXEventHandler,但我找不到一個。不在文檔或我看過的其他地方。

感謝

回答

1

但我不知道如何與RowLeave做到這一點。有什麼建議麼?我找不到任何示例或在文檔中找到它。我發現在文檔的方法,但不知道如何註冊事件處理

DataGridViewRowLeave事件屬性,您可以通過雙擊它在設計訂閱(確保你在活動頁通過點擊小閃電圖標):

enter image description here

0
this.clientsProjectHistoryDataGridView.RowLeave += this.clientsProjectHistoryDataGridView_RowLeave; 
+2

請添加一些解釋。 –

0

爲了處理事件,當它˚F ires,你需要註冊一個事件處理程序。事件處理程序是一種匹配事件期望的簽名(又名委託)的方法。據the docs for DataGridView.RowLeave,事件的期望是DataGridViewCellEventHandler委託的方法,其中有 方法簽名,看起來像這樣:

void DataGridViewCellEventHandler(
    Object sender, 
    DataGridViewCellEventArgs e 
) 

所有你需要做的就是寫一個相匹配的簽名(按照約定的方法,它被命名爲clientsProjectHistoryDataGridView_RowLeave)。首先,在代碼中設置事件處理方法。它看起來像

private void DataGridViewCellEventHandler(Object sender, DataGridViewCellEventArgs e){ 
{ 
    //do stuff, casting the sender if needed 
} 

然後,只需註冊DataGridView的事件,通常是在構造函數或事件。

this.clientsProjectHistoryDataGridView.RowLeave += DataGridViewCellEventHandler; 
+0

感謝它的工作,奇怪的是,當我將它添加到屬性中時,它創建了sthe函數,即使我已經創建了它,並且如果我刪除了它創建的函數並使用之前創建的另一個名稱相同的名稱,它將引發錯誤。奇怪的,但我的工作無論如何 – shenk

+1

是的,視覺工作室intellisense有時可以提出奇怪的建議。最終,只要編譯器認爲您註冊的方法(按名稱)具有與期望的表單匹配的簽名,則所有內容都將運行。在設計師如此出色之前,你必須以這種方式手動註冊事件。 – ryanyuyu

+0

是的我回想起來,我只是因爲某種原因無法通過它不在下拉菜單中的屬性,因此我手動輸入了方法名稱,然後讓它生成方法,然後刪除我的舊方法(相同的名稱),並添加我的代碼新的 – shenk