사용자가 목록 상자를 마우스 오른쪽 버튼으로 클릭 할 때 목록 상자에서 선택한 항목을 모두 선택 취소하는 기능이 있습니다. 내 프로젝트의 모든 목록 상자에이 함수를 적용 할 수 있습니까?C# 전역 이벤트가 여러 형식으로 액세스 됨
selectedListBox h = new selectedListBox();
h.setSelected(listboxNameHere);
사용자가 목록 상자를 마우스 오른쪽 버튼으로 클릭 할 때 목록 상자에서 선택한 항목을 모두 선택 취소하는 기능이 있습니다. 내 프로젝트의 모든 목록 상자에이 함수를 적용 할 수 있습니까?C# 전역 이벤트가 여러 형식으로 액세스 됨
selectedListBox h = new selectedListBox();
h.setSelected(listboxNameHere);
어쩌면 확장자 + λ?
public static class ListBoxSelectExtension
{
public static void SetSelected(this ListBox Me)
{
Me.MouseDown +=
(sender, e) =>
{
if (e.Button == MouseButtons.Right)
((ListBox)sender).ClearSelected();
};
}
}
새 클래스를 인스턴스화 할 필요 또는 모든리스트 박스 파생 클래스가 될이 필요없이 다음을 수행 할 수 있습니다이 방법 :
MyListBox1.SetSelected();
MyListBox2.SetSelected();
등
변수 이름으로'@ this'를 사용할 수도 있습니다. IMO는 자연스럽게 (정상적인 방법으로) – Sebastian
:이 작업을 수행하기 위해 각 목록 상자에 대해 다음
public class selectedListbox{
private void setSelected(ListBox details){
details.MouseDown += new System.Windows.Forms.MouseEventHandler(this.listBoxDeselectAll);
}
private void listBoxDeselectAll(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
((ListBox)sender).ClearSelected();
}
}
}
과 :
나는 수업을하지, 다른 방법이 있는지 알고 클래스 등의 기능을 넣을 가장 간단한 방법은 ListBox로부터 상속받은 클래스를 만드는 것입니다 :
om 목록 상자를 표준 목록 상자를 사용할 때와 같은 방법으로 사용하십시오.
public class MyListBox : ListBox
{
public sListBox() : base()
{
MouseDown += new System.Windows.Forms.MouseEventHandler(this.MouseDownFired);
}
private void MouseDownFired(object sender, MouseEventArgs args)
{
if (args.Button == MouseButtons.Right)
{
SelectedItems.Clear();
}
}
당신은 그것을 유용하게 찾을 수 있습니다 'ListBox'로부터 상속받은 새로운 컨트롤을 생성하고이 기능을 가지고 있습니다. – Amy
form.controls 컬렉션을 사용할 수 있다고 생각하지만 전체 답변을 드릴만큼 충분한 경험이 없습니다. check msdn – NirMH
@ Inuyasha 새 컨트롤을 만드는 데 대한 자세한 내용을 알려주시겠습니까? 감사합니다. –