我的应用程序使用ClickOnce技术进行部署。但是当用户开始使用应用程序时我遇到了问题。重现问题的方案如下:
由于主窗口未激活,因此用户必须先点击它才能开始输入用户名和密码。如何解决此问题,以便主窗口出现后处于活动状态?我尝试过以下代码,但它不起作用:
protected override void OnInitialized(EventArgs e)
{
while (!this.IsFocused) { this.Focus(); WPFWaitForPriority.WaitForPriority(DispatcherPriority.Background); }
base.OnInitialized(e);
}
答案 0 :(得分:1)
最有可能的是你将重点放在闪屏上。因此,当它关闭时,任何时候都不再有焦点。关闭表单后,调用要对焦的控件上的“选择方法”(我猜的是用户名文本框)。
答案 1 :(得分:0)
试试这段代码: 伪代码:
OnShown
this.focus
我的意思是。
使用不同的活动。
答案 2 :(得分:0)
我有一个WPF / ClickOnce应用程序,并没有相同的问题。我没有使用App.xaml的StartupUri,我在App.xaml.cs中手动显示登录窗口,如下所示:
protected override void OnStartup(StartupEventArgs e)
{
this.DispatcherUnhandledException += new System.Windows.Threading.DispatcherUnhandledExceptionEventHandler(App_DispatcherUnhandledException);
this.Exit += new ExitEventHandler(App_Exit);
base.OnStartup(e);
ShowLogin();
}
private MainWindow _mainWindow;
private void ShowLogin()
{
_mainWindow = new MainWindow(delegate()
{
//.......
});
_mainWindow.Closed += new EventHandler(_mainWindow_Closed);
this.MainWindow = _mainWindow;
this.MainWindow.Show();
}
答案 3 :(得分:0)
根据我的理解,您可以在构造函数内部以编程方式触发click事件。
答案 4 :(得分:0)
关闭启动画面并显示LoginForm后,LoginForm.Activate()
怎么样?
答案 5 :(得分:0)
也许尝试将焦点放在该表单上的TextBox上。登录名称例如。
我认为OnInitialized事件可能为时尚早。 OnShown应该是好的。
答案 6 :(得分:0)
您使用的是Visual Studio吗?我知道如果你转到项目选项卡下的表单属性,你可以指定启动对象。也许您可以指定主表单,并且可以在其前面加载启动画面。
答案 7 :(得分:0)
你试过了吗?
protected override void OnInitialized(EventArgs e)
{
while (this.CanFocus) { this.Focus(); WPFWaitForPriority.WaitForPriority(DispatcherPriority.Background); }
base.OnInitialized(e);
}