跳过布局事件处理程序

时间:2014-11-21 14:54:27

标签: c# winforms devexpress

我使用布局事件处理程序将焦点设置为特定字段。因此,每次发生布局事件时,焦点都将设置为该字段。

我的问题是,当我制作可见/不可见的东西时,焦点将再次设置到我不想要的特定字段。

如何避免?

有没有办法说“下次跳过布局事件处理程序”?

或者我应该使用另一个事件处理程序而不是布局一个?

我只是希望第一次设置它,但Load事件似乎没有按预期工作。

Load for 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();
}

2 个答案:

答案 0 :(得分:0)

从我收集的内容中,您需要在第一次显示表单时关注特定控件。首先,您可以尝试将TabIndex属性设置为0.在这种情况下,此控件将集中在显示的第一个表单上。

还要尝试将控件集中在Form.Shown事件而不是Load事件上。

答案 1 :(得分:0)

您可以使用LayoutEventArgs.AffectedProperty属性。只需检查其值是否设置为"Visible"

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

    this.myTimeEdit.Focus();
}