2013-11-21 32 views
3

如何檢測事件CellClick中按下了哪個鼠標按鈕,或者如何檢測MouseClick事件中按下的是哪個單元。RadGridView檢測CellClick事件按鈕

+0

一個問題......這是真的的DataGridView? – varocarbas

+0

對不起,它是RadGridView,我的不好。 – borkowij

+0

沒問題;我也誤解了你的問題,所以我們甚至:) – varocarbas

回答

3

您可以使用鼠標單擊事件來檢測哪個單元被點擊。

然後您必須將發件人投射到RadGridView,然後使用CurrentCell屬性。

GridViewCellInfo dataCell = (sender as RadGridView).CurrentCell; 

如果你想哪個鼠標按鈕被點擊使用:

if (e.Button == MouseButtons.Right) 
{ 
//your code here 
} 
1

我已經寫了這個答案,認爲你的意思是DataGridView;但是這個代碼也可能對RadGridView有用。我通常在這些情況下做的事情(DataGridView)依靠全球標誌來協調兩個不同的事件;只需幾個全局標誌就可以了。示例代碼:

bool aCellWasSelected = false; 
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) 
{ 
    aCellWasSelected = true; 
} 

private void dataGridView1_MouseClick(object sender, MouseEventArgs e) 
{ 
    DataGridViewCell selectedCell = null; 
    if (aCellWasSelected) 
    { 
     selectedCell = dataGridView1.SelectedCells[0]; 
     MouseButtons curButton = e.Button; 
     //Do stuff with the given cell + button 
    } 

    aCellWasSelected = false; 
} 

注:建議全局變量爲基礎的方法是不理想的程序,而是一個實用的解決方案中相當多的DataGridView相關的情況下非常方便。如果存在直接解決方案(如本例中的解決方案(如其他解決方案或DataGridView中提議的CellMouseClick事件),則不應該使用這種方法。無論如何,我會讓這個答案作爲參考(對於那些尋求相當於兩個事件協調的情況,那裏沒有直接的解決方案)。

+0

謝謝,但我不想使用全局變量。 – borkowij

+0

@bonio如上所述,在RadGridView中沒有太多經驗;但至少在DataGridView中,這在很多情況下是「必需的」(=最適合的過程)。 – varocarbas