是否有一個DataGrid一個雙擊事件?我試圖用這個代碼打開一個詳細信息表單,當用戶雙擊一行。C#的WinForm Datagrid中雙擊事件
http://www.codeproject.com/KB/grid/usingdatagrid.aspx
我試圖通過雙擊在控制增加了,但它給dataGrid1_Navigate代替。
是否有一個DataGrid一個雙擊事件?我試圖用這個代碼打開一個詳細信息表單,當用戶雙擊一行。C#的WinForm Datagrid中雙擊事件
http://www.codeproject.com/KB/grid/usingdatagrid.aspx
我試圖通過雙擊在控制增加了,但它給dataGrid1_Navigate代替。
當您在設計模式下雙擊某個控件時得到的結果是控件思想的設計者最常使用的事件,在這種情況下它是Navigate
。
但是,是的,這個控制有兩種雙擊事件:
public partial class Form1 : Form
{
DataGrid grid = new DataGrid();
public Form1()
{
InitializeComponent();
grid.DoubleClick += new EventHandler(grid_DoubleClick);
grid.MouseDoubleClick += new MouseEventHandler(grid_MouseDoubleClick);
grid.Dock = DockStyle.Fill;
this.Controls.Add(grid);
}
void grid_MouseDoubleClick(object sender, MouseEventArgs e)
{
}
void grid_DoubleClick(object sender, EventArgs e)
{
}
}
然而,這兩個事件的運行控制,當你雙擊任何地方,他們不直接給你什麼是行的信息選擇。您可以通過基於被點擊的點(e.Location
)從控件中獲取它,在grid_MouseDoubleClick
處理程序中雙擊行,這就是它在TreeView控件中的工作方式。乍一看,我沒有看到控制是否有這種方法。如果您沒有特別的理由使用此控件,則可能需要考慮使用DataGridView。
代碼使用DataGrid對象,而不是一個DataGridView對象: – steve76 2010-10-17 21:03:45
聽起來像是你需要一種方式來獲得所有事件的列表對於給定的控制,而不是尋找默認的事件(這是VS給你當您雙擊在設計控制) 有這樣做的幾種方法:
一種方式選擇網格。 然後點擊活動圖標,打開屬性窗口爲事件列表,然後doubel單擊要strart編碼事件的事件。
或者,切換到代碼視圖,在代碼窗口左上角的對象下拉列表中選擇網格,然後從事件列表中該控件的所有事件列表中選擇所需事件(代碼窗口的右上角)
我試了@ steve76的代碼,但不得不微調它在Windows Embedded CE 6.0系統中工作。這是對我有用的東西。
private void dataGrid1_DoubleClick(object sender, EventArgs e)
{
Point pt = dataGrid1.PointToClient(Control.MousePosition);
DataGrid.HitTestInfo info = dataGrid1.HitTest(pt.X, pt.Y);
int row;
int col;
if (info.Column < 0)
col = 0;
else
col = info.Column;
if (info.Row < 0)
row = 0;
else
row = info.Row;
object cellData = dataGrid1[row, col];
string cellString = "(null)";
if (cellData != null)
cellString = cellData.ToString();
MessageBox.Show(cellString, "Cell Contents");
}
以下是如何獲得的價值,如果你想知道: System.Drawing.Point PT = dataGrid1.PointToClient(Cursor.Position); DataGrid.HitTestInfo信息= dataGrid1.HitTest(PT); INT行; int col; if(info.Column <0)col = 0; else col = info.Column; if(info.Row <0)row = 0; else row = info.Row; 串此處= DataGrid1中[行,列]的ToString(); MessageBox.Show(here); – steve76 2010-10-17 23:53:19