如果是这样,我们如何分别处理每个单元的cellcontentclick事件?我正在动态添加列。继承我的代码: -
dataGridViewShow.Columns.Add(new DataGridViewTextBoxColumn { HeaderText = "Date", DataPropertyName = "Date", CellTemplate = new DataGridViewTextBoxCell() });
DataGridViewLinkColumn toComputer = new DataGridViewLinkColumn();
toComputer.HeaderText = "Status";
toComputer.Name = "link1";
toComputer.UseColumnTextForLinkValue = true;
toComputer.Text = "Save to File";
toComputer.ActiveLinkColor = Color.White;
toComputer.LinkColor = Color.Blue;
toComputer.TrackVisitedState = true;
toComputer.VisitedLinkColor = Color.Green;
dataGridViewShow.Columns.Add(toComputer);
dataGridViewShow.CellContentClick += (SaveFileType_click);
DataGridViewLinkColumn toNet = new DataGridViewLinkColumn();
toLinx.HeaderText = " ";
toLinx.Name = "link2";
toLinx.UseColumnTextForLinkValue = true;
toLinx.Text = "Send to Net";
toLinx.ActiveLinkColor = Color.White;
toLinx.LinkColor = Color.Blue;
toLinx.TrackVisitedState = true;
toLinx.VisitedLinkColor = Color.Green;
dataGridViewShow.Columns.Add(toNet);
dataGridViewShow.CellContentClick += ("Don't know how this gets handled");
上面的代码确实显示了两个不同的链接类型列,但我无法弄清楚如何单独处理每个事件?
private void SaveFileType_click(object sender, DataGridViewCellEventArgs e)
{
selectedRow = e.RowIndex;
if (e.ColumnIndex == 0)
{
//some code goes here
}if (e.ColumnIndex == 1 && (string)dataGridViewShow[e.ColumnIndex, e.RowIndex].Value != "Complete")
{
//some code goes here
}
}
答案 0 :(得分:2)
您不单独处理事件。您需要处理OnCellClick
或CellContentClick
事件。然后使用DataGridViewCellEventArgs
对象e
,您可以获取单击的列和行。根据选择的单元格,您可以区别对待事件
public void dataGridView1_OnCellClick(object sender,
DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == YourLinkColumnIndexA)
//some code goes here.
else if (e.ColumnIndex == YourLinkColumnIndexB)
//some code goes here.
}
所以你在代码中连接事件,但只有一次。
我希望这会有所帮助。