从任务计划程序运行应用程序时未激活窗口

问题描述 投票:1回答:1

在我的应用程序中,我试图使文本框突出显示,以便在加载表单后立即键入内容。显示Form时,我可以看到TextBox中的光标闪烁,但是如果我键入任何内容,则什么也没有发生。我需要单击窗口以开始在TextBox中输入文本。如果我从Visual Studio中正常运行我的应用程序,它将可以正常运行,但是如果我的应用程序是使用Task Scheduler运行的,则会发生这种情况。您有什么建议吗?

下面是我的代码:

this.TopMost = true;
textbox.Focus();

我也尝试过textbox.Select();,但无论如何都无法正常工作。

c# winforms focus taskscheduler
1个回答
1
投票

问题:当应用程序由任务计划程序操作运行时,主窗口显示为非活动状态,并且系统通知用户在任务栏中闪烁应用程序的图标。这是根据设计

一个简单的解决方法是在窗体设计器中设置启动窗口的WindowStateWindowState=,然后在窗口完成其内容的加载并准备好将其重新设置为FormWindowState.Minimized时出现,引发FormWindowState.Minimized事件。

FormWindowState.Normal设置为ShownFormWindowState.Normal causes a call设置为ShowWindow

激活并显示窗口。如果窗口最小化或最大化后,系统会将其还原到其原始大小和位置。应用程序在显示以下内容的窗口时应指定此标志第一次。

窗口现在照常显示,处于活动状态并准备接收输入。另外,代码使用nCmdShow属性显式设置了应该接收输入的控件。

我建议设置SW_SHOWNORMAL处理程序ActiveControl,并在重新设置Shown属性之前添加一小段延迟,以防止任务栏图标陷入闪烁状态。

如果窗口需要重新定位或调整大小,则需要在async重置后执行此操作,因为在此之前窗口处于最小化状态,并且不会缓存位置的大小值。表单的WindowState应设置为WindowState

StartPosition
© www.soinside.com 2019 - 2024. All rights reserved.