跳过布局事件处理程序
本文关键字:程序 事件处理 布局 | 更新日期: 2023-09-27 18:31:34
我使用布局事件处理程序将焦点设置为特定字段。因此,每次发生布局事件时,焦点都将设置为该字段。
我的问题是,当我使某些内容可见/不可见时,焦点将再次设置为我不想要的这个特定字段。
如何避免这种情况?
有没有办法说"下次跳过布局事件处理程序"?
还是应该使用另一个事件处理程序而不是布局处理程序?
我只想第一次设置它,但 Load 事件似乎没有按预期工作。
Load 事件处理程序的代码:在设计器中.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();
}
据我所知,您需要在首次显示窗体时聚焦特定控件。首先,您可以尝试将 TabIndex 属性设置为 0。在这种情况下,此控件将集中在显示的第一个窗体上。
还尝试将控件的焦点放在 Form.Show 事件上,而不是 Load 事件上。
您可以使用
LayoutEventArgs.AffectedProperty
属性。只需检查其值是否设置为 "Visible"
:
private void myControl_Layout(object sender, LayoutEventArgs e)
{
if (e.AffectedProperty == "Visible")
return;
this.myTimeEdit.Focus();
}