저는 DataGridView가 7 개의 셀을 가지고 있습니다. 모든 셀에 내가 누를 경우 현재 행이 제거됩니다. thou 이벤트는 아무 문제없이 이름이 Public Event EscapeOnFirstRowPressed
이고 각 컨트롤을 가져옵니다. 초기 상태. 모든 세포가 SQL 테이블에 데이터를 쓰기 DataGridView에서 행을 제거하십시오.
- 다음 충족하는 경우는
이 프로세스의 일반적인 생각은, 그래서 사용자는 새로운 데이터를 가져올 준비가되었습니다 .
쓰기 절차가 정상이므로 행을 제거하겠습니다.
나는이 동작이 RowValidated
sub 또는 CellEnter
(현재 행을 떠나 다음 행을 가져올 때 발생 함)에서 호출해야한다고 말합니다. 그러나 어느 곳에서 나는 다음과 같은 오류
DGV.Rows.RemoveAt(0) {"Operation cannot be performed in this event handler."}
나는이 작업에 다른 프로세스를 시도했다에게받은 명령
If Not DGV.CurrentCell.EditedFormattedValue = "" Then
If Not DGV.Rows(RowIndex).IsNewRow Then
DGV.Rows.RemoveAt(RowIndex)
DGV.Refresh()
End If
ElseIf DGV.CurrentCell.EditedFormattedValue = Nothing Then
If Not DGV.Rows(RowIndex).IsNewRow Then
DGV.Rows.RemoveAt(RowIndex)
DGV.Refresh()
End If
End If
을 넣어합니다. 나는 다음과 같은 명령을
Dim myKeyData As System.Windows.Forms.Keys
Dim myMsg As System.Windows.Forms.Message
myKeyData = Keys.Escape
ProcessCmdKey(myMsg, myKeyData)
을 제공하여 키 누르기 동작을 시뮬레이션하려고하지만 포인터가 나는 Esc 키를 누르면 실행 같은 명령을 실행 할 때 나는 같은 오류가 발생합니다.
관심을 가져 주셔서 감사드립니다. 내가 그걸 할 때? CellValidated의 끝에서? 또는 RowValidated 후에? 그리고 BeginInvocke를 사용하는 방법에 대해 제게 도움을 주시겠습니까? 왜냐하면 나는 그것을하려고했으나 어떤 긍정적 인 결과도 낼 수 없었습니다. –
'BeginInvoke'를 호출하고 행을 삭제하는 델리게이트를 전달합니다. – SLaks
당신은 타운에서 최고입니다, 성공적으로 내 문제를 해결했습니다. 나는 당신에게 더 많은 표를 줄 수있는 능력을 갖고 싶습니다. 다시 한 번 감사드립니다. –