[英]Form.invoke not focusing on control
I asked a different version of this question before.我之前问过这个问题的不同版本。 Now i have another problem:
现在我有另一个问题:
I solved it by clicking on "Txt" location but its not a formal solution.我通过单击“Txt”位置解决了它,但它不是正式的解决方案。 What i miss here?
我在这里想念什么? My code like below;
我的代码如下;
Thread on "FormA" fired below event; “FormA”上的线程在事件下方触发;
private void OnMessage()
{
this.InvokeIfRequired(() =>
{
var loginForm = new LoginForm();
loginForm.ShowDialog();
});
}
"FormB" has below method “FormB”有以下方法
private void LoginForm_Shown(object sender, EventArgs e)
{
TxtUsername.Focus();
}
"InvokeIfRequired" extension method like below; “InvokeIfRequired”扩展方法如下;
public static void InvokeIfRequired(this Control control, MethodInvoker action)
{
if (control.InvokeRequired)
{
control.Invoke(action);
}
else
{
action();
}
}
I found a solution by adding Thread.Sleep on form_shown event.我通过在 form_shown 事件上添加 Thread.Sleep 找到了解决方案。 After sleep, i activate form and set Form.ActiveControl property.
睡眠后,我激活表单并设置 Form.ActiveControl 属性。 Its done.
完成。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.