【问题标题】:Avoid Focus on Mainwindow when showing it显示时避免关注主窗口
【发布时间】:2016-06-10 15:27:14
【问题描述】:

我目前正在开发 wpf 中的弹出程序,该程序被 this.hide();MainWindow1.WindowState = WindowState.Hidden 隐藏并使用 MainWindow1.WindowState = WindowState.Normal;“弹出”

我的问题是,我不希望主窗口获得任何键盘焦点。 所以无论程序有键盘焦点,当弹出窗口显示时,它应该保持它。

我只是希望这样,所以人们不会在不处理的弹出窗口中输入整个电子邮件,只是因为他们没有注意到它弹出。

编辑: 我不想将注意力集中在我自己的任何程序窗口中,而是在其他 Windows 程序(例如 Outlook)中

编辑2: 这是我的程序中的a screenshot,只是为了澄清PopUp 类的用法的晦涩之处。

Edit3:也许可以将键盘焦点设置回之前聚焦的程序?

【问题讨论】:

  • 我有感觉,这不应该是一个标准的窗口。也许Popup 可以吗?
  • @Novitchi S 不,不是,因为我不是在尝试将注意力集中在自己的程序上,而是在外部程序上。
  • @Sinatr 你这是什么意思?我已经搜索了 PopupWindow 或其他东西,但我没有找到任何东西。也许它的形式?
  • @Marv,点击this link(在我之前的评论中隐藏了^^)。另请参阅this 问题。

标签: c# wpf focus


【解决方案1】:

所以人们不会在

中输入整个电子邮件

我建议您在弹出窗口运行时将主页面控件或其容器Enabled 属性设置为false,否则将其反转。因此将用户的注意力集中在弹出窗口直到其被确认。

【讨论】:

  • 不幸的是,这并不能阻止窗口在显示时获得焦点。
  • @Marv True。我已经更新了帖子以反映可以避免的情况。
  • 是的,没错,但这只是为了说明我想解决什么问题。我的意思是他们不会在我的窗口中输入他们的电子邮件而不是电子邮件程序本身,因为它只是在他们没有注意到的情况下弹出。
【解决方案2】:

如果您的目的是显示通知表单,请检查该组件:Windows Forms Toolkit NotificationForm

【讨论】:

  • 不,我只想让我的主窗口弹出而不用键盘聚焦。
【解决方案3】:

解决方案(看起来)太简单了,您需要做的就是:

MainWindow1.Showactivated = false;
this.Show();

这将显示主窗口,而焦点保持在主窗口出现之前具有焦点的任何程序上。

【讨论】:

    猜你喜欢
    • 2021-02-22
    • 1970-01-01
    • 1970-01-01
    • 2013-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多