VB.Net 버전이 없지만이 빠른 C# 코드 단편을 통해 올바른 방향으로 안내 할 수 있기를 바랍니다.
이 예제에서는 두 개의 열이있는 간단한 DataGridView를 설정합니다. 첫 번째로 DataGridViewComboBox는 "텍스트"또는 "콤보"의 두 가지 선택 항목으로 채워집니다.
두 번째 열은 처음에는 디자이너의 DataGridViewTextBoxColumn으로 설정됩니다.
DataGridView에서 CurrentCellDirtyStateChanged 이벤트를 처리합니다. 셀이 더럽고 첫 번째 열 (ComboBox) 만 확인합니다. CommitEdit을 호출하여 콤보에서 새 값을 가져와야합니다. 그렇지 않으면 이전 값을 볼 수 있습니다. 콤보 상자의 선택에 따라 필자는 두 번째 열의 셀을 해당 유형의 새 셀로 덮어 씁니다.
자신 만의 논리를 추가합니다 (드롭 다운을 채우고 값을 처리). 값을 저장 한 다음 셀에 다시 넣을 수도 있습니다. 여기에 빠른 VB 번역 나는 시험과 작품 있다는 것입니다
private void dataGridView1_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
if (dataGridView1.IsCurrentCellDirty == false)
{
return;
}
dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
if (dataGridView1.CurrentCell.ColumnIndex == 0)
{
if (((string)dataGridView1.CurrentCell.Value) == "Text")
{
dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex].Cells[1] = new DataGridViewTextBoxCell();
}
else if (((string)dataGridView1.CurrentCell.Value) == "Combo")
{
dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex].Cells[1] = new DataGridViewComboBoxCell();
}
}
}
: 여기
내가 사용에 신속하고 더러운 테스트를했던 코드입니다.
Public Class Form1
Private Sub DataGridView1_CurrentCellDirtyStateChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DataGridView1.CurrentCellDirtyStateChanged
If DataGridView1.IsCurrentCellDirty = False Then
Return
End If
DataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit)
If DataGridView1.CurrentCell.ColumnIndex = 0 Then
If CStr(DataGridView1.CurrentCell.Value) = "Text" Then
DataGridView1.Rows(DataGridView1.CurrentCell.RowIndex).Cells(1) = New DataGridViewTextBoxCell
ElseIf CStr(DataGridView1.CurrentCell.Value) = "Combo" Then
DataGridView1.Rows(DataGridView1.CurrentCell.RowIndex).Cells(1) = New DataGridViewComboBoxCell
End If
End If
End Sub
최종 클래스
먼저 저장해야합니다, 그래서 당신은 그 칼럼에 저장된 값을 잃게됩니다.
감사합니다. 도움이됩니다. 나는 VB 나 a가 아니다.NET 전문가 그래서 원칙적으로 무엇을하는지 보지만 VB에서 새로운 DataGridViewTextBoxCell 또는 새 DataGridViewComboBoxCell을 할당하는 방법은 아직 파악해야 할 사항입니다. 어쨌든 나는 당신이 당신의 대답에 넣었던 시간에 감사하고, 나는 오늘 오후에 그것을 시도 할 것입니다. – John
잘 작동합니다. 고맙습니다! – John