2013-12-20 69 views
0

我有與datagridview有趣的情況。獲取自定義發件人

在_keydown處理程序是這樣的代碼:

rowindex = DataGridView1.CurrentRow.Index 
Dim cea As New DataGridViewCellEventArgs(4, rowindex) 
DataGridView1_CellClick("program", cea) 

有了這個,我「編程點擊」到小區4當前行中得到我的邏輯程序流程。
但我也可以用鼠標點擊單元格4,datagridview也會發生同樣的情況。

問題是: 如何識別datagridview的_CellClick處理程序誰激活事件(通過鼠標或程序)?爲此,我通過名稱「程序」給發件人打電話。

我可以以某種方式獲取_CellClick處理程序下的這個名稱(發件人的名稱),以及我無法將發件人轉換爲「程序」。或者我可以嗎?

回答

1

第一:您不應該直接調用事件處理函數方法。而且這與提高事件的效果並不相同,因爲其他事件處理程序沒有執行。

這種做法是更好的方式

Private Sub DataGridView1_CellClick(sender as object, e as DataGridViewCellEventArgs) 
    ProcessCellClick(e.RowIndex, e.ColumnIndex, true) 
End Sub 

Private Sub Button1_Click(...) 
    rowindex = DataGridView1.CurrentRow.Index 
    ProcessCellClick(rowIndex, 4, false) 
End Sub 

Private Sub ProcessCellClick(rowIndex as Integer, columnIndex as integer, fromCellClickEvent as boolean) 
    ... 
End Sub 

這就是我會做。 無論如何,如果你只是想檢查發件人,這將有所幫助。

​​
+0

嗯,在那個地方我很方便地調用處理程序作爲函數。而且,如果我認爲這樣做可能會最簡單和有用,只需涉及一個公共變量,該變量將在_CellClick中告訴「程序單擊」到datagridview。 –