2016-07-22 52 views
1

不接收鼠標點擊我嘗試使用按鈕文件名和路徑加載到DataGridView的細胞。 我放在這樣一個單元中的按鈕:按鈕時,放置在DataGridView的

var cellRectangle = dataGridView.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, false); 
int buttonX = dataGridView.Location.X + cellRectangle.Location.X + cellRectangle.Width - btnLoadFile.Width; 
int buttonY = dataGridView.Location.Y + cellRectangle.Location.Y; 

btnLoadFile.Location = new Point(buttonX + 20, buttonY); 
btnLoadFile.Height = cellRectangle.Height - 2; 
btnLoadFile.Visible = true; 
btnLoadFile.BringToFront(); 

我想用戶點擊該按鈕,選擇文件中的FileDialog等 問題是按鈕不會獲​​得任何點擊。網格單元接收點擊。

有沒有人有一個想法,爲什麼它發生,我該如何處理呢?

+0

使按鈕爲其他數據網格視圖的孩子重新路由的按鈕單擊事件 –

+0

@Uthistran:剛剛試了一下。該按鈕仍然不響應點擊.... – DmitryRibak

+0

這聽起來不對。你可能只是沒有把它連接起來。如果您可以看到並單擊它,__ will_將調用其單擊事件。當你在設計器中雙擊它時會發生什麼? – TaW

回答

0

嘗試......

dataGridView.Controls.SetChildIndex(btnLoadFile, 0); 
// Bring it to the front 
btnLoadFile.BringToFront(); 

也許你並不需要最後一行...

+0

不幸的是它並沒有改變任何東西......同樣的行爲 – DmitryRibak

0

我會用DataGridViewButtonColumn而不是繪製網格上方的按鈕。 這給你一個按鈕內的每一行。

https://msdn.microsoft.com/de-de/library/system.windows.forms.datagridviewbuttoncolumn(v=vs.110).aspx

如果你想有一個顯示電子郵件,例如另一個細胞內的按鈕,就可以得到所需的editcell類型和實現文本框和按鈕的組合,使按鈕纔可見在編輯模式時。看看這裏 https://msdn.microsoft.com/de-de/library/7tas5c80(v=vs.100).aspx 獲取更多信息。我會張貼你一些代碼,但不幸的是,我只爲自己的目的製作了自己的單元格/編輯控件。

+0

之前是的,我知道這個選項只是扔在表單上的按鈕,將它放在一個細胞似乎要簡單得多。另外我不喜歡整個柱子都裝滿了按鈕,它不會讓用戶感到混亂 – DmitryRibak