2015-04-20 29 views
0

我有一個DataGridView在我的程序中有一個DataGridViewButtonColumn。 當用戶點擊該按鈕時,它會在另一個面板上顯示更多細節。c#DataGridViewButtonColumn auto click

我有麻煩試圖做到以下幾點:

點擊「發送」按鈕的排序屏幕上,將訂單發送到數據庫,並DataGridView會自動更新,但用戶仍然會需要單擊該行上相應的列按鈕以查看更多詳細信息。

我想要做的是,當用戶點擊發送時,它會自動查找與orderID對應的行,並自動單擊該按鈕。

這是我有:

foreach(DataGridViewRow row in OutOrderListGridView.Rows){ 
       string compareID = row.Cells[0].Value.ToString(); 
       if (compareID == OrderID) 
       { 
        row.Cells[10].Selected = true; <-- here i want to performClick() on the columnbutton(cell[10]) on the specific row. 
       } 
      } 

謝謝。

+0

每行都有自己的「發送」按鈕嗎? WinForms或WPF? – Dasanko

+0

WindForms,每一行都有自己的按鈕,讓我說我想單擊位於第10列的第5行的按鈕,我想執行該按鈕上的按鈕。我知道有正常的按鈕performclick(),但我喜歡做同樣的事情,以columnbutton –

回答

1

我不是100%確定我很明白你在做什麼,但是如果我是正確的,你想要做以下事情,只要CellClick事件處理你試圖最終實現的任何事情。

您可以使用已知值手動提升事件,而不是「執行」點擊(PerformClick())......這應該適用於您,但在給定未知變量的特定應用程序中略有未測試。下面的代碼也不得不稍微修改以適應。

for (int i = 0; i < OutOrderListGridView.RowCount; i++) 
    { 
     if (OutOrderListGridView[0, i].Value.ToString() == OrderID) 
     { 
      OutOrderListGridView_CellClick(OutOrderListGridView, new DataGridViewCellEventArgs(10, i)); 
      break; 
     } 
    } 

foreach環路不得不以使使用中的當前索引(環的位置)的一個foreach循環不提供將被改變爲for循環。

字符串比較不需要是兩個階梯,所以被相應地濃縮。

我還在循環中添加了一個break,因爲我認爲一旦找到了匹配項,循環遍歷剩餘的行就沒有意義了。

+0

感謝您的答覆,我會測試一旦我回到我的電腦 –

+1

這看起來像我在想什麼解決方案應該是。只需進行一次編輯:對於DataGridViewButtonColumn,您應該使用'CellContentClick'與'CellClick' [正如此處所述](http://stackoverflow.com/a/13687844/3773066)。 – OhBeWise

+0

@OhBeWise好點。我猜在一天結束時它會被實現,但單元格按鈕點擊首先被處理,但是使用CellContentClick而不是CellClick的+1 – RussDunn