적어도 하나 이상의 항목이 항상 ListBox에서 선택 상태로 유지됩니다. 사용자가 ListBox의 빈 영역을 클릭하면 선택을 취소해야합니다. 이 작업을 수행하는 방법?빈 영역을 클릭하면 목록 상자 선택 취소
내 응용 프로그램의 일부로 Opera Notes를 복제하려고합니다. 먼저 바인드 된 DataGridView를 사용했습니다. 이제 왼쪽 창에서 바인드 된 ListBox를 사용하고 있습니다.
적어도 하나 이상의 항목이 항상 ListBox에서 선택 상태로 유지됩니다. 사용자가 ListBox의 빈 영역을 클릭하면 선택을 취소해야합니다. 이 작업을 수행하는 방법?빈 영역을 클릭하면 목록 상자 선택 취소
내 응용 프로그램의 일부로 Opera Notes를 복제하려고합니다. 먼저 바인드 된 DataGridView를 사용했습니다. 이제 왼쪽 창에서 바인드 된 ListBox를 사용하고 있습니다.
ListBox.MouseDown 이벤트를 처리합니다.
ListBox.IndexFromPoint를 호출하여 MouseDown 이벤트의 MouseEventArgs 매개 변수에서 Location 속성을 전달합니다.
클릭 한 항목의 인덱스를 반환하거나, 클릭 한 빈 영역에 ListBox.NoMatches를 반환해야합니다.
반환 값이 ListBox.NoMatches 인 경우 ListBox.SelectedIndex 속성을 -1로 설정하여 선택을 지 웁니다.
Mr. Avalanchis 님이 이미 질문에 답변했습니다. 나는 그가 제안한 단계를 수행하는 데 필요한 코드를 추가하기 만하고있다. 희망의 코드가 도움이되기를 바랍니다.
private void listBox1_MouseDown(object sender, MouseEventArgs e)
{
Point pt = new Point(e.X, e.Y);
int index = listBox1.IndexFromPoint(pt);
if (index <= -1)
{
listBox1.SelectedItems.Clear();
}
}
고마워요! 나는 listbox를 사용하여이를 수행했는데, DataGrid 뷰에서도 동일한 작업을 수행 할 수 있습니까? – SMUsamaShah
MouseEventArgs를 얻기 위해 MouseDown에 대한 새 처리기를 만들지 않아도된다는 점에 유의하십시오. 기존 클릭 핸들러에서 e를 새 MouseEventArgs 변수로 캐스팅하고 그 위치에서 위치를 가져올 수 있습니다. –