在winforms中添加类似功能的超链接

时间:2014-01-10 08:13:55

标签: c# windows winforms events datagridview

我的动机是显示一些信息作为链接,点击它,我应该能够获得点击项目的ID并打开新窗口,其中包含项目的详细信息。由于我是胜利形式的新手,但我做了一些研究,可能的选项可能是DataGridViewLinkColumn ,但我无法将id与列数据和点击事件链接到哪个打开的新窗口。

或者还有其他更好的方法。?

2 个答案:

答案 0 :(得分:2)

我假设你正在使用DataGridView元素。

您可以使用对象的CellClick event。它将传递一个DataGridViewCellEventArgs对象,其上有一个ColumnIndex属性和一个RowIndex属性。这样您就可以找出用户点击的数据网格中的位置。

并且,例如,您可以使用该信息来查找ID或其他信息,因为您现在知道行和&用户点击的单元格。

任意,例如:

// wire up the event handler, this could be anywhere in your code
dataGridView.CellClick += dataGridView_CellClick; // when the event fires, the method dataGridView_CellClick (as shown below) will be executed

private void dataGridView_CellClick(object sender, DataGridViewCellEventArgs e)
{
    var rowIndex = e.RowIndex;
    var columnIndex = e.ColumnIndex; // = the cell the user clicked in

    // For example, fetching data from another cell
    var cell = dataGridView.Rows[rowIndex].Cells[columnIndex];

    // Depending on the cell's type* (see a list of them here: http://msdn.microsoft.com/en-us/library/bxt3k60s(v=vs.80).ASPX) you could cast it
    var castedCell = cell as DataGridViewTextBoxColumn;

    // Use the cell to perform action
    someActionMethod(castedCell.Property);
}

(* DataGridViewCell类型:http://msdn.microsoft.com/en-us/library/bxt3k60s(v=vs.80).ASPX

答案 1 :(得分:2)

如果您有数据网格视图,则可以按如下方式获取单元格的值:

首先,创建一个单元格事件

datagridview1.CellClick+= CellClickEvent;

DataGridViewCellEventArgs包含一些属性,这些属性是rowindex(您单击的行)和columnindex(您单击的列)以及其他一些...

创建一个包含2列的数据网格,第0列保存行的Id,第1列保存链接

void CellClickEvent(object sender, DataGridViewCellEventArgs e)
{
 if(e.ColumnIndex == 1) // i'll take column 1 as a link
 {
  var link = datagridview1[e.columnindex, e.rowindex].Value;
  var id = datagridview1[0, e.rowindex].Value;

  DoSomeThingWithLink(link, id);
 }
}

void DoSomeThingWithLink(string link, int id)
{
 var myDialog = new Dialog(link,id);
 myDialog.ShowDialog();
 myDialog.Dispose(); //Dispose object after you have used it
}