이 코드는 선택 변경 이벤트를 두 번 트리거합니다. 내가 어떻게 막을 수 있니? 현재이 문제를 방지하기 위해 플래그 또는 집중된 속성을 사용하고 있습니다. 그러나 실제적인 방법은 무엇입니까?이벤트 바인딩을 제거한 후에도 DataGridView의 SelectionChange 이벤트가 DataBinding에서 두 번 실행됩니다.
나는 winfoms
편집에 사용하고
질문을 서면으로 내 실수는, 여기에 내가
private void frmGuestInfo_Load(object sender, EventArgs e)
{
this.dgvGuestInfo.SelectionChanged -= new System.EventHandler(this.dgvGuestInfo_SelectionChanged);
dgvGuestInfo.DataSource=dsFillControls.Tables["tblName"];
this.dgvGuestInfo.SelectionChanged += new System.EventHandler(this.dgvGuestInfo_SelectionChanged);
}
private void dgvGuestInfo_SelectionChanged(object sender, EventArgs e)
{
//this function is raised twice, i was expecting that this will not be raised
}
왜 이런 일이 발생합니까? 어떻게 피할 수 있습니까? 나는 심지어 데이터를 설정하고 이벤트를 다시 바인딩하는 순간에 이벤트를 취소했습니다. 그럼 왜 아직도 이벤트가 발생합니까? –
왜 '데이터 소스'를 두 번 설정하고 있습니까? 핸들러에 중단 점을 넣고'Just My Code'를 비활성화하고 호출 스택을 봅니다. – SLaks
또한 핸들러를 두 번 추가하지 않도록하십시오. 'dgvGuestInfo_SelectionChanged'을 마우스 오른쪽 버튼으로 클릭하고 모든 참조 찾기를 클릭하십시오. – SLaks