DataGridView.CellContentClick 이벤트
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
셀 내부에 있는 내용을 클릭할 때 발생합니다.
public:
event System::Windows::Forms::DataGridViewCellEventHandler ^ CellContentClick;
public event System.Windows.Forms.DataGridViewCellEventHandler CellContentClick;
public event System.Windows.Forms.DataGridViewCellEventHandler? CellContentClick;
member this.CellContentClick : System.Windows.Forms.DataGridViewCellEventHandler
Public Custom Event CellContentClick As DataGridViewCellEventHandler
이벤트 유형
예제
다음 코드 예제에서는 클릭 한 셀 링크 셀 또는 단추 셀 인지 확인 하 고 결과 해당 작업을 수행 하는이 이벤트에 대 한 처리기를 제공 합니다. 이 예제는에서 사용할 수 있는 보다 큰 예제의 일부는 DataGridViewComboBoxColumn 클래스 개요 항목입니다.
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 (dynamic_cast<DBNull^>(value) != nullptr) { return; }
employeeId = value->ToString();
DataGridViewCell^ boss = RetrieveSuperiorsLastNameCell(employeeId);
if (boss != nullptr)
{
DataGridView1->CurrentCell = boss;
}
}
private:
bool IsANonHeaderLinkCell(DataGridViewCellEventArgs^ cellEvent)
{
if (dynamic_cast<DataGridViewLinkColumn^>(DataGridView1->Columns[cellEvent->ColumnIndex]) != nullptr
&&
cellEvent->RowIndex != -1)
{ return true; }
else { return false; }
}
private:
bool IsANonHeaderButtonCell(DataGridViewCellEventArgs^ cellEvent)
{
if (dynamic_cast<DataGridViewButtonColumn^>(DataGridView1->Columns[cellEvent->ColumnIndex]) != nullptr
&&
cellEvent->RowIndex != -1)
{ return true; }
else { return (false); }
}
private:
DataGridViewCell^ RetrieveSuperiorsLastNameCell(String^ employeeId)
{
for each (DataGridViewRow^ row in DataGridView1->Rows)
{
if (row->IsNewRow) { return nullptr; }
if (row->Cells[ColumnName::EmployeeID.ToString()]->Value->ToString()->Equals(employeeId))
{
return row->Cells[ColumnName::LastName.ToString()];
}
}
return nullptr;
}
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;
}
Private Sub DataGridView1_CellContentClick(ByVal sender As Object, _
ByVal e As DataGridViewCellEventArgs) _
Handles DataGridView1.CellContentClick
If IsANonHeaderLinkCell(e) Then
MoveToLinked(e)
ElseIf IsANonHeaderButtonCell(e) Then
PopulateSales(e)
End If
End Sub
Private Sub MoveToLinked(ByVal e As DataGridViewCellEventArgs)
Dim employeeId As String
Dim value As Object = DataGridView1.Rows(e.RowIndex). _
Cells(e.ColumnIndex).Value
If value.GetType Is GetType(DBNull) Then Return
employeeId = CType(value, String)
Dim boss As DataGridViewCell = _
RetrieveSuperiorsLastNameCell(employeeId)
If boss IsNot Nothing Then
DataGridView1.CurrentCell = boss
End If
End Sub
Private Function IsANonHeaderLinkCell(ByVal cellEvent As _
DataGridViewCellEventArgs) As Boolean
If TypeOf DataGridView1.Columns(cellEvent.ColumnIndex) _
Is DataGridViewLinkColumn _
AndAlso Not cellEvent.RowIndex = -1 Then _
Return True Else Return False
End Function
Private Function IsANonHeaderButtonCell(ByVal cellEvent As _
DataGridViewCellEventArgs) As Boolean
If TypeOf DataGridView1.Columns(cellEvent.ColumnIndex) _
Is DataGridViewButtonColumn _
AndAlso Not cellEvent.RowIndex = -1 Then _
Return True Else Return (False)
End Function
Private Function RetrieveSuperiorsLastNameCell( _
ByVal employeeId As String) As DataGridViewCell
For Each row As DataGridViewRow In DataGridView1.Rows
If row.IsNewRow Then Return Nothing
If row.Cells(ColumnName.EmployeeId.ToString()). _
Value.ToString().Equals(employeeId) Then
Return row.Cells(ColumnName.LastName.ToString())
End If
Next
Return Nothing
End Function
설명
이 이벤트는 셀 내용을 클릭할 때 발생합니다. 단추 셀이나 검사 상자 셀에 포커스가 있는 동안 사용자가 스페이스바를 누르고 놓을 때도 발생하며, 스페이스바를 누르는 동안 셀 내용을 클릭하면 이러한 셀 형식에 대해 두 번 발생합니다.
이 이벤트를 사용하여 에 대한 단추 클릭 또는 에 대한 DataGridViewButtonCellDataGridViewLinkCell링크 클릭을 검색합니다.
에서 클릭하는 DataGridViewCheckBoxCell경우 이 이벤트는 검사 상자가 값을 변경하기 전에 발생하므로 현재 값을 기준으로 예상 값을 계산하지 않으려면 일반적으로 이벤트를 대신 처리 DataGridView.CellValueChanged 합니다. 이 이벤트는 일반적으로 포커스가 셀을 떠날 때 발생하는 사용자 지정 값이 커밋될 때만 발생하므로 이벤트도 처리 DataGridView.CurrentCellDirtyStateChanged 해야 합니다. 해당 처리기에서 현재 셀이 검사 상자 셀인 경우 메서드를 DataGridView.CommitEdit 호출하고 값을 전달합니다Commit.
이벤트를 처리 하는 방법에 대 한 자세한 내용은 참조 하세요. 이벤트 처리 및 발생합니다.
적용 대상
추가 정보
.NET