2014-11-21 123 views
0

我使用佈局事件處理程序爲了將焦點設置到特定字段。所以每次佈局事件發生時,焦點將被設置爲該字段。跳過佈局事件處理程序

我的問題是,當我使某些東西可見/不可見時,焦點將再次設置到我不想要的特定字段。

如何避免這種情況?

有沒有辦法說「下次跳過佈局事件處理程序」?

或者我應該使用另一個事件處理程序而不是佈局?

我只是想第一次設置它,但Load事件似乎並沒有像預期的那樣工作。

的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事件? – 2014-11-21 14:57:55

+0

在XtraUserControl的屬性中,在動作佈局上,我設置了一個執行焦點的功能。 – taktak004 2014-11-21 15:01:58

+0

您可以在此處發佈代碼嗎?你的意思是在佈局事件處理程序? – 2014-11-21 15:03:36

回答

0

從我所收集,你需要關注一個特定的控制時,表格首次顯示。首先,您可以嘗試將TabIndex屬性設置爲0.在此情況下,此控件將集中在顯示的第一個窗體上。

也嘗試將控件集中在Form.Shown事件而不是Load事件。

0

您可以使用LayoutEventArgs.AffectedProperty屬性。只是檢查它的值是否設置爲"Visible"

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

    this.myTimeEdit.Focus(); 
}