CellContentClick有时不起作用
本文关键字:不起作用 CellContentClick | 更新日期: 2023-09-27 18:10:00
我的CellContentClick
活动遇到了麻烦。有时,它不起作用。这是我的代码:
private void studentDGV_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex >= 0)
{
DataGridViewRow row = this.studentDGV.Rows[e.RowIndex];
MessageBox.Show((String)row.Cells["StudentNo"].Value.ToString()+"");
}
}
我记得当我用vb.net编程时,我也遇到了这个事件的问题。所以我使用另一个事件SelectionChanged
,但我不知道如何在c#中实现它。
这是我的vb.net代码:
'This function was called whenever you change the cell Cursor
Private Sub SelectionChanged(ByVal sender As Object, ByVal e As EventArgs) Handles DGV.SelectionChanged
' Update the labels to reflect changes to the selection.
Try
Dim que As String = Me.DGV.Rows(Me.DGV.SelectedCells(0).RowIndex).Cells(0).Value
changeAccessCB.Text = SQL.getAccess(que)
Catch ex As Exception
End Try
End Sub
有谁能帮我把这段代码写成c#吗?如果可能的话,请列举出如何做到这一点的步骤。
private void DataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (IsANonHeaderLinkCell(e))
{
MoveToLinked(e);
}
else if (IsANonHeaderButtonCell(e))
{
PopulateSales(e);
}
}
private void MoveToLinked(DataGridViewCellEventArgs e)
{
string employeeId;
object value = DataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
if (value is DBNull) { return; }
employeeId = value.ToString();
DataGridViewCell boss = RetrieveSuperiorsLastNameCell(employeeId);
if (boss != null)
{
DataGridView1.CurrentCell = boss;
}
}
private bool IsANonHeaderLinkCell(DataGridViewCellEventArgs cellEvent)
{
if (DataGridView1.Columns[cellEvent.ColumnIndex] is
DataGridViewLinkColumn &&
cellEvent.RowIndex != -1)
{ return true; }
else { return false; }
}
private bool IsANonHeaderButtonCell(DataGridViewCellEventArgs cellEvent)
{
if (DataGridView1.Columns[cellEvent.ColumnIndex] is
DataGridViewButtonColumn &&
cellEvent.RowIndex != -1)
{ return true; }
else { return (false); }
}
private DataGridViewCell RetrieveSuperiorsLastNameCell(string employeeId)
{
foreach (DataGridViewRow row in DataGridView1.Rows)
{
if (row.IsNewRow) { return null; }
if (row.Cells[ColumnName.EmployeeId.ToString()].Value.ToString().Equals(employeeId))
{
return row.Cells[ColumnName.LastName.ToString()];
}
}
return null;
}