根据数据网格中的行选择打开表单

时间:2011-03-18 16:16:17

标签: c# winforms

出于好奇,是否可以根据数据网格中的行选择打开表单?我还需要表单来显示基于datagrid中的用户名的信息。人员用户名包含在数据网格的行中。

3 个答案:

答案 0 :(得分:4)

你必须对此进行编码,但是,有可能。

首先,使用您可以处理的数据填充DataGrid。

在DataGrid的Selection Changed事件中,读取该数据,创建要显示的表单(如果它尚不存在),并使用Show()显示它。

这就像一个典型的菜单程序。

答案 1 :(得分:2)

您可以在以下事件

下处理此问题
 dataGridView1_CellClick

获取datagridiview的CurrentCell

根据您的要求检查username是否存在,并显示相应的表格

示例代码:

if (this.dataGridView1.CurrentCell != null) 
{
    string strusrname=dataGridView1.CurrentCell.Value.ToString();
    //Here find out for the user name from the string as you get the currentcell value of the datagridview
    // Raise the corresponding form as per you required
} 

答案 2 :(得分:0)

不确定这是不是你的追求,因为如果你想在另一个预建表单上显示数据或者创建一个新数据,我不会不这样做,但是这里就是这样。 这样你甚至不用担心选择的行,假设你有绑定到datagrid的人的用户名,你可以创建一个像这样的超链接列:

<asp:HyperLinkcolumn DataNavigateUrlField="Username" 
                     DataNavigateUrlFormatString="PersonForm.aspx?Username={0}"     
                     HeaderText="More Details" 
                     Text="View Person Details" />

然后PersonForm可以加载人员详细信息。或者,如果您想获得有关如何捕获itemcommand上所选行的帮助,请告诉我。

希望这有帮助。

在winforms标签更新后

编辑,您可能会对此感兴趣:DataGridViewLink On MSDN

一般代码是:

DataGridViewLinkColumn links = new DataGridViewLinkColumn();

links.UseColumnTextForLinkValue = true;
links.HeaderText = ColumnName.ReportsTo.ToString();
links.DataPropertyName = //Set your field here.
links.ActiveLinkColor = Color.White;
links.LinkBehavior = LinkBehavior.SystemDefault;
links.LinkColor = Color.Blue;
links.TrackVisitedState = true;
links.VisitedLinkColor = Color.YellowGreen;

DataGridView1.Columns.Add(links);

添加链接后,您可以使用DataGridView1_CellContentClick捕获它并使用它执行您想要的操作,即打开新表单或更改当前表单。