C# 表单激活和停用事件

2024-01-31

我有两个表单,主表单和子表单。当 mainForm 失去焦点时,我希望 subForm 消失,然后在 mainForm 重新获得焦点时重新出现。我在 mainForm 上使用 Activated 和 Deactivate 事件来跟踪 mainForm 是否具有焦点。当激活激活被触发时,我执行 subForm.Show() ,而停用则执行相反的操作。我遇到的问题是,当 subForm 获得焦点 mainForm 消失时,因为我不知道如何以编程方式说“当 mainForm 的 Deactivate 事件触发时使 subForm 消失,除非是因为 subForm 获得焦点。我正在做的事情的全部意义是让两个窗口在主窗体因用户单击另一个应用程序或使用 ALT+TAB 切换而失去焦点时消失。我不想留下子窗体。有什么方法可以检查 Deactive 是否触发因为属于该应用程序的另一种形式获得了关注,而不是其他应用程序?

class MainForm : Form
{
    SubForm subForm = new SubForm();

    private void mainForm_Activated(object sender, EventArgs e)
    {
        this.subForm.Show();
    }

    private void mainForm_Deactivate(object sender, EventArgs e)
    {
        this.subForm.Hide()

        // I need some logic to make sure that it is only hidden
        // when the mainForm loses focus because the user clicked
        // some other application in the taskbar and not when the
        // subForm itself gains the focus.
    }
}

This 在我的机器上工作 http://www.codinghorror.com/blog/2007/03/the-works-on-my-machine-certification-program.html.

public partial class Form1 : Form {
    public Form1() {
        InitializeComponent();
    }

    private Form2 _form2;
    private void Form1_Load(object sender, EventArgs e) {
        _form2 = new Form2();
        _form2.Show();
        HandleFocusEvents();
    }

    private void HandleFocusEvents() {
        this.LostFocus += Form_LostFocus;
        _form2.LostFocus += Form_LostFocus;
        this.GotFocus += Form_GotFocus;
    }

    private void Form_LostFocus(object sender, EventArgs e) {
        if (!_form2.ContainsFocus && !this.ContainsFocus) {
            _form2.Hide();
        }
    }

    private void Form_GotFocus(object sender, EventArgs e) {
        if (!_form2.Visible) {
            _form2.Show();
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 表单激活和停用事件 的相关文章

  • 以文化中立的方式将字符串拆分为单词

    我提出了下面的方法 旨在将可变长度的文本拆分为单词数组 以进行进一步的全文索引处理 删除停止词 然后进行词干分析 结果似乎不错 但我想听听关于这种实现对于不同语言的文本的可靠性的意见 您会建议使用正则表达式来代替吗 请注意 我选择不使用 S
  • WCF RIA 服务 - 加载多个实体

    我正在寻找一种模式来解决以下问题 我认为这很常见 我正在使用 WCF RIA 服务在初始加载时将多个实体返回给客户端 我希望两个实体异步加载 以免锁定 UI 并且我想利用 RIA 服务来执行此操作 我的解决方案如下 似乎有效 这种方法会遇到
  • 按成员序列化

    我已经实现了template
  • 秒表有最长运行时间吗?

    多久可以Stopwatch在 NET 中运行 如果达到该限制 它会回绕到负数还是从 0 重新开始 Stopwatch Elapsed返回一个TimeSpan From MSDN https learn microsoft com en us
  • 在 Windows 窗体中保存带有 Alpha 通道的单色位图会保存不同(错误)的颜色

    在 C NET 2 0 Windows 窗体 Visual Studio Express 2010 中 我保存由相同颜色组成的图像 Bitmap bitmap new Bitmap width height PixelFormat Form
  • 在 ASP.NET 5 中使用 DI 调用构造函数时解决依赖关系

    Web 上似乎充斥着如何在 ASP NET 5 中使用 DI 的示例 但没有一个示例显示如何调用构造函数并解决依赖关系 以下只是众多案例之一 http social technet microsoft com wiki contents a
  • C#中如何移动PictureBox?

    我已经使用此代码来移动图片框pictureBox MouseMove event pictureBox Location new System Drawing Point e Location 但是当我尝试执行时 图片框闪烁并且无法识别确切
  • C++ OpenSSL 导出私钥

    到目前为止 我成功地使用了 SSL 但遇到了令人困惑的障碍 我生成了 RSA 密钥对 之前使用 PEM write bio RSAPrivateKey 来导出它们 然而 手册页声称该格式已经过时 实际上它看起来与通常的 PEM 格式不同 相
  • 创建链表而不将节点声明为指针

    我已经在谷歌和一些教科书上搜索了很长一段时间 我似乎无法理解为什么在构建链表时 节点需要是指针 例如 如果我有一个节点定义为 typedef struct Node int value struct Node next Node 为什么为了
  • 重载<<的返回值

    include
  • 使用 Bearer Token 访问 IdentityServer4 上受保护的 API

    我试图寻找此问题的解决方案 但尚未找到正确的搜索文本 我的问题是 如何配置我的 IdentityServer 以便它也可以接受 授权带有 BearerTokens 的 Api 请求 我已经配置并运行了 IdentityServer4 我还在
  • while 循环中的 scanf

    在这段代码中 scanf只工作一次 我究竟做错了什么 include
  • 转发声明和包含

    在使用库时 无论是我自己的还是外部的 都有很多带有前向声明的类 根据情况 相同的类也包含在内 当我使用某个类时 我需要知道该类使用的某些对象是前向声明的还是 include d 原因是我想知道是否应该包含两个标题还是只包含一个标题 现在我知
  • 如何在 C 中调用采用匿名结构的函数?

    如何在 C 中调用采用匿名结构的函数 比如这个函数 void func struct int x p printf i n p x 当提供原型的函数声明在范围内时 调用该函数的参数必须具有与原型中声明的类型兼容的类型 其中 兼容 具有标准定
  • 通过指向其基址的指针删除 POD 对象是否安全?

    事实上 我正在考虑那些微不足道的可破坏物体 而不仅仅是POD http en wikipedia org wiki Plain old data structure 我不确定 POD 是否可以有基类 当我读到这个解释时is triviall
  • C# 成员变量继承

    我对 C 有点陌生 但我在编程方面有相当广泛的背景 我想做的事情 为游戏定义不同的 MapTiles 我已经像这样定义了 MapTile 基类 public class MapTile public Texture2D texture pu
  • 测试用例执行完成后,无论是否通过,如何将测试用例结果保存在变量中?

    我正在使用 NUNIT 在 Visual Studio 中使用 Selenium WebDriver 测试用例的代码是 我想在执行测试用例后立即在变量中记录测试用例通过或失败的情况 我怎样才能实现这一点 NUnit 假设您使用 NUnit
  • C# 模拟VolumeMute按下

    我得到以下代码来模拟音量静音按键 DllImport coredll dll SetLastError true static extern void keybd event byte bVk byte bScan int dwFlags
  • Windows 和 Linux 上的线程

    我在互联网上看到过在 Windows 上使用 C 制作多线程应用程序的教程 以及在 Linux 上执行相同操作的其他教程 但不能同时用于两者 是否存在即使在 Linux 或 Windows 上编译也能工作的函数 您需要使用一个包含两者的实现
  • 对来自流读取器的过滤数据执行小计

    编辑问题未得到解答 我有一个基于 1 个标准的过滤输出 前 3 个数字是 110 210 或 310 给出 3 个不同的组 从流阅读器控制台 问题已编辑 因为第一个答案是我给出的具体示例的字面解决方案 我使用的实际字符串长度为 450 个

随机推荐

  • 将长 xticks 分成 2 行 matplotlib

    我有以下 matplotlib 我想将 x ticks 分成 2 行而不是 1 行 因为有时它们太长 这就是为什么它们会遇到另一行 然后就无法读取 x ticks 请记住 X ticks 不是硬编码的 它们正在变化 所以 x 刻度并不总是相
  • NSSortDescriptor - 将 # 和数字推到列表末尾 - iphone xcode

    我有一个表格视图 显示按字母顺序排序的联系人并将其分为几个部分 我在用 NSSortDescriptor sortDescriptor NSSortDescriptor alloc initWithKey dataSource keyNam
  • 如何使用 Liferay Tomcat 减少部署时间

    我使用 Liferay 6 并结合 Struts2 我正在使用 Liferay Bundled Tomcat 7 它工作正常 我的问题是 每当资源 portlet xml 或 java 文件 发生更改以及单击 build xml 时 部署都
  • 我可以在 Visual Studio 中的代码块注释中添加链接吗?

    我可以在 Visual Studio 中的代码块注释中添加链接吗 例如 block 1 class class1 block 2 class class2 review class1 1 类 是 1 类的链接 提前致谢 You can bo
  • 如何知道我的代码在 IDE 中以“调试”模式运行?

    如何编写在 调试 模式下 例如在 Eclipse 中作为 调试为 Java 应用程序 调用 与在 运行 模式下 例如在 Eclipse 中作为 作为 Java 应用程序运行 调用 下运行时行为不同的代码 也就是说 例如 代码可以在 作为 J
  • React 路由器中的动态路径

    我正在尝试将我的网站从传统的网络应用程序方法迁移到基于反应的应用程序 在此过程中 我遇到了与网址相关的问题 在我的网站中 在服务器端我使用网址重写将 url 映射到正确的控制器的功能 但我无法弄清楚如何在反应路由器中处理这个事情 我当前的反
  • 在 ubuntu 上编译 C 代码时遇到问题。 (#包括错误)

    我正在尝试在最新版本的ubuntu上编译C程序 以便稍后将编译后的程序放在另一台机器上 但是 当我使用 gcc prog c o prog 编译时 出现错误 致命错误 asm page h 没有这样的文件或目录 以下是标题 include
  • 隐藏微调器中的第一个项目

    我在微调器上工作 微调器中有 5 个项目 我只想隐藏微调器中的第一个项目 不是删除 只是隐藏 问题是 当我单击微调器时 没有选择 api 获取的项目通过使用第一个 item id 我刚刚在微调器的第一个位置 0 处添加了空白字段 它工作正常
  • 如何在 PHP 中将“一周的第一天”设置为星期四

    我想将一周的第一天设置为星期四 而不是星期日或星期一 因为这是公司的截止日期 我已经有一个代码来确定日期的当前周数 但它从星期日或星期一开始 如何根据我的喜好修改这些 function findweek date monthstart da
  • 使用 Jasmine 监视可观察订阅的结果

    我正在 Jasmine 单元测试一个使用 Observables 的角度组件 我的组件有我正在测试的生命周期挂钩 ngOnInit this dataService getCellOEE this cell subscribe value
  • 如何在 Jest 单元测试中查看渲染的 React 组件是什么样子?

    我正在尝试对 React 组件进行测试 我需要检查渲染后的样子 尝试使用ReactDOMServer renderToString 但它失败了 这是代码 import NewRec from src components edit impo
  • sqlSave 错误

    我正在与sqlSave添加我的矩阵B看起来像这样 Noinscr 88877799 45645687 23523521 45454545 到 SQL 表 所以我运行以下命令 sqlSave channel b testsFelix dbo
  • C++ Windows 异步 IO 命名管道未收到第一条消息

    修改后的代码来自 使用重叠 I O 的命名管道服务器https msdn microsoft com en us library windows desktop aa365603 v vs 85 aspx https msdn micros
  • Swift 3:使用 NSCoder 解码值的安全方法?

    在 Swift 3 之前 您可以使用 NSCoder 解码布尔值 如下所示 if let value aDecoder decodeObjectForKey TestKey as Bool test value Swift 3 中建议的方法
  • 多个定义和仅标头库

    我有一个带有几个 c 和 h 文件的 C 程序 我决定将程序的一部分设为 仅标头 因此我将代码从 c 移至 h 现在我遇到了多重定义问题 但我不知道为什么 例如 main c includes utils h vector c includ
  • iOS 13 中的 viewDidAppear 问题

    我刚刚开始使用 iOS 13 进行编码 并且遇到了视图控制器功能的问题 在 iOS 13 之前 我有一个使用此函数呈现的视图控制器 func presentDetail viewControllerToPresent UIViewContr
  • 为什么magento不自动加载父类

    我有一个模块 它将使用我的控制器而不是magento的控制器
  • 日期/时间点/间隔的(关系)数据库性能

    我正在使用 Access SQL 做一个项目 并且进展顺利 我学到了很多关于 Access 和 VBA 的知识 这个网站在这个过程中给了我很大的帮助 现在我面临着一个性能问题 由于我在这种 SQL 工作方面经验很少 所以我来这里是为了一些想
  • 奇怪的乘法结果

    在我的代码中 我在 C 代码中进行了乘法运算 所有变量类型均为 double f1 0 f1 rot 0 xu 0 f1 rot 1 yu 0 f1 1 f1 rot 0 xu 1 f1 rot 1 yu 1 f1 2 f1 rot 0 x
  • C# 表单激活和停用事件

    我有两个表单 主表单和子表单 当 mainForm 失去焦点时 我希望 subForm 消失 然后在 mainForm 重新获得焦点时重新出现 我在 mainForm 上使用 Activated 和 Deactivate 事件来跟踪 mai