我使用布局事件处理程序将焦点设置为特定字段。因此,每次发生布局事件时,焦点都将设置为该字段。
我的问题是,当我制作可见/不可见的东西时,焦点将再次设置到我不想要的特定字段。
如何避免?
有没有办法说“下次跳过布局事件处理程序”?
或者我应该使用另一个事件处理程序而不是布局一个?
我只是希望第一次设置它,但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();
}
答案 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();
}