2014-11-21 2 views
0

레이아웃 이벤트 처리기를 사용하여 포커스를 특정 필드로 설정합니다. 따라서 Layout 이벤트가 발생할 때마다 해당 필드에 포커스가 설정됩니다.레이아웃 이벤트 처리기 건너 뛰기

내 문제는 뭔가를 보이게하거나 보이지 않게 만들 때 포커스가 내가 원하지 않는이 특정 필드로 다시 설정된다는 것입니다.

어떻게 피할 수 있습니까?

"다음 번 레이아웃 이벤트 처리기 건너 뛰기"라고 말하는 방법이 있습니까?

또는 레이아웃 대신 다른 이벤트 처리기를 사용해야합니까?

처음으로 설정하고 싶지만 Load 이벤트가 예상대로 작동하지 않는 것 같습니다. 로드 이벤트 핸들러에 대한

코드 : Designer.cs

private void InitializeComponent() 
{ 
    // other stuff automatically generated by windows 
    this.Load += new System.EventHandler(this.myControl_Load); 
    // other stuff automatically generated by windows 
} 

을에 및 myControl.cs의 :

내가 수집 무엇부터
private void myControl_Layout(object sender, LayoutEventArgs e) 
{ 
    this.myTimeEdit.Focus(); 
} 
+0

Load 이벤트에서 어떻게합니까? –

+0

XtraUserControl의 속성에서 Layout 레이아웃에 포커스를 설정하는 함수를 설정했습니다 – taktak004

+0

코드를 여기에 게시 할 수 있습니까? Layout eventhandler에서 의미가 있습니까? –

답변

0

, 당신은 특정 컨트롤을 집중해야 할 때 양식이 처음으로 표시됩니다. 먼저 TabIndex 속성을 0으로 설정할 수 있습니다.이 경우이 컨트롤은 첫 번째 폼에 초점을 맞 춥니 다.

또한 Load 이벤트 대신 Form.Shown 이벤트에 컨트롤을 집중 시키십시오.

0

LayoutEventArgs.AffectedProperty 속성을 사용할 수 있습니다. 그 값이 "Visible"으로 설정되어 있는지 확인하십시오 :

private void myControl_Layout(object sender, LayoutEventArgs e) 
{ 
    if (e.AffectedProperty == "Visible") 
     return; 

    this.myTimeEdit.Focus(); 
}