我的动机是显示一些信息作为链接,点击它,我应该能够获得点击项目的ID并打开新窗口,其中包含项目的详细信息。由于我是胜利形式的新手,但我做了一些研究,可能的选项可能是DataGridViewLinkColumn ,但我无法将id与列数据和点击事件链接到哪个打开的新窗口。
或者还有其他更好的方法。?
答案 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
}