2011-05-09 100 views
15

給定一個特定的行號和列索引如何計算DataGridView中的單元格位置(IE:Location.Point)?確定DataGridView中的單元格位置

我需要單元格位置的原因是我可以在單元格內放置一個按鈕以允許瀏覽文件夾(datagridview顯示文件夾路徑)。

有關如何完成此歡迎的其他建議。

+2

您的想法很脆弱。有一種更好的方法可以將按鈕添加到「DataGridView」中的單元格中。單元格可以包含任何類型的控件,包括自定義控件。我建議先檢查一下。 – 2011-05-09 12:57:50

+0

爲什麼不使用DataGridViewButtonColumn?它是.NET Framework的一部分。 – Vale 2011-05-09 13:08:06

+0

因爲我想實現的是一個帶有按鈕旁邊的文本框(我確定有更好的方法,但不能完全解決 - prob繼承DataGridViewColumn)。 – 2011-05-09 13:16:42

回答

29

您不能真正找到DGV單元的點,因爲單元佔據DGV中的矩形區域。但是,您可以使用DataGridView.GetCellDisplayRectangle() method找到此區域。它返回一個Rectangle作爲由Cell的列和行索引給出的DGV Cell的顯示區域。如果你真的想要一個點,你可以很容易地使用Rectangle構建任何Rectangle的四個角點。

// Get Rectangle for second column in second row. 
var cellRectangle = dataGridView1.GetCellDisplayRectangle(1, 1, true); 
// Can create Points using the Rectangle if you want. 
Console.WriteLine("Top Left  x:{0}\t y:{1}", cellRectangle.Left, cellRectangle.Top); 
Console.WriteLine("Bottom Right x:{0}\t y:{1}", cellRectangle.Right, cellRectangle.Bottom); 

但我同意你的問題的評論者;最好創建一個自定義的DataGridViewColumn並在那裏託管你的TextBox和Button。 Here's an example爲DateTimePicker控件執行此操作:

+0

我最終以正確的方式使用您的建議來創建列。它運作良好。謝謝! – 2011-05-13 14:25:53

+0

您提供的這個MSDN正是我正在尋找的。 – Jack 2016-05-27 04:05:48

相關問題