在我的应用程序中,我试图使文本框突出显示,以便在加载表单后立即键入内容。显示Form
时,我可以看到TextBox
中的光标闪烁,但是如果我键入任何内容,则什么也没有发生。我需要单击窗口以开始在TextBox
中输入文本。如果我从Visual Studio中正常运行我的应用程序,它将可以正常运行,但是如果我的应用程序是使用Task Scheduler运行的,则会发生这种情况。您有什么建议吗?
下面是我的代码:
this.TopMost = true;
textbox.Focus();
我也尝试过textbox.Select();
,但无论如何都无法正常工作。
问题:当应用程序由任务计划程序操作运行时,主窗口显示为非活动状态,并且系统通知用户在任务栏中闪烁应用程序的图标。这是根据设计。
一个简单的解决方法是在窗体设计器中设置启动窗口的WindowState
WindowState
=
,然后在窗口完成其内容的加载并准备好将其重新设置为FormWindowState.Minimized
时出现,引发FormWindowState.Minimized
事件。
将FormWindowState.Normal
设置为Shown的FormWindowState.Normal
causes a call设置为ShowWindow:
激活并显示窗口。如果窗口最小化或最大化后,系统会将其还原到其原始大小和位置。应用程序在显示以下内容的窗口时应指定此标志第一次。
窗口现在照常显示,处于活动状态并准备接收输入。另外,代码使用nCmdShow
属性显式设置了应该接收输入的控件。
我建议设置SW_SHOWNORMAL
处理程序ActiveControl,并在重新设置Shown
属性之前添加一小段延迟,以防止任务栏图标陷入闪烁状态。
如果窗口需要重新定位或调整大小,则需要在async
重置后执行此操作,因为在此之前窗口处于最小化状态,并且不会缓存位置的大小值。表单的WindowState
应设置为WindowState
StartPosition