2011-03-26 5 views
0

목록 상자를 볼 수있는 상태에서 listbox.lostfocus 이벤트를 사용하여 목록 상자를 숨길 수 있도록 Windows 양식을 클릭했지만 이벤트가 발생하지 않습니다. form.click 이벤트를 사용하여 목록 상자를 숨길 수 있다고 가정하지만 포커스를받을 수있는 양식을 얻는 방법은 무엇입니까?왜 LostFocus 이벤트가 발생하지 않습니까?

+0

목록 상자의 용도는 무엇입니까? 잘못된 컨트롤을 사용하고있을 수 있습니다. – dbasnett

답변

0

한 형태 을 수행 taht를을 감지하는 형태의 이벤트를 클릭하여 사용할 수 있습니다 아니 포커스를 받고 싶습니다. 컨테이너 컨트롤이되도록 디자인되었으므로 자식 컨트롤 중 하나가 항상 포커스를 가져옵니다. 엄밀히 말하면 머리 위로 두드리면 그 행동을 잃을 수 있습니다.

public partial class Form1 : Form { 
    public Form1() { 
     InitializeComponent(); 
     this.SetStyle(ControlStyles.ContainerControl, false); 
    } 
    protected override void OnClick(EventArgs e) { 
     this.Focus(); 
     base.OnClick(e); 
    } 
} 

그러나 이것은 잘못된 생각입니다. 양식에 포커스가 있음을 나타내는 방법이 없으면 OnPaint()를 재정 의하여 포커스 사각형을 그리는 등의 작업을 수행해야합니다. 그렇지 않으면 사용자가 포커스가있는 위치를 완전히 잃어 버립니다. 그렇다면 사용자가 키보드를 사용할 때 재미있는 일이 발생하지 않는 상당한 불편 함이 있습니다. 양식에는 양식이 사용되지 않습니다.

하지 마십시오. 컨트롤을 사라지게하려면 메뉴 항목, 툴바 버튼 또는 일반 버튼을 UI에 추가하십시오. 사용자가 클릭 할 수있는 것.

+0

"this.SetStyle (ControlStyles.ContainerControl, false);" 시도했을 때 효과가 없습니다. 그냥 "this.Focus();" onClick 할 – ahmedsafan86

0

LostFocus 이벤트 작업 할 때와 같은 다른 컨트롤에 포커스 이동 텍스트 상자, ... 또는 형태는 모든 초점을 잃었을 때 당신은

관련 문제