首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在Windows窗体中一键完成两件事

如何在Windows窗体中一键完成两件事
EN

Stack Overflow用户
提问于 2008-12-13 12:14:46
回答 3查看 1.5K关注 0票数 0

在我的主窗体上,有另一个(可浮动的)窗口。这个浮动窗口的工作原理有点像弹出窗口,因为当用户单击此窗口之外的其他地方时,它将关闭。这是由停用事件处理的。但是我想要做的是,如果用户点击一个不同的控件(比如一个按钮),我想关闭这个浮动窗口,然后只需点击一下就可以激活那个按钮。目前,用户必须单击两次(一次用于停用窗口,另一次用于激活所需的按钮)。有没有办法只需一次点击就能做到这一点?

EN

回答 3

Stack Overflow用户

发布于 2008-12-13 12:36:55

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
foreach(Control c in parentForm.Controls)
{
   c.Click += delegate(object sender, EventArgs e)
              {
                  if(floatyWindow != null && floatyWindow.IsFloating)
                  {
                       floatyWindow.Close();
                  }
              };
}

然后像往常一样添加处理程序。这个额外的处理程序可以关闭浮动窗口。确保你的浮动窗口也不是一个对话框,因为这不会允许你的父窗体的控件被点击。

票数 2
EN

Stack Overflow用户

发布于 2008-12-13 12:34:53

我有一个略显老套的解决方案。在停用事件中,向主窗体激发另一个自定义事件。然后,当您的主窗体处理自定义事件时,枚举您的控件(this.Controls),并通过检查它们的所有绑定来定位鼠标下的控件,然后调用Focus()。您可能需要按具有最小表面积的控件进行排序,或者您可以有一个单独的“可聚焦”控件列表,如按钮。

另一种方法可能是在可浮动窗口的OnMouseLeave或主窗口的OnMouseHover之后立即将焦点切换到主窗体,但将可浮动窗口保持在顶部,只是没有焦点。控制主窗体的全局鼠标按下,然后关闭可浮动窗口。

这些只是理论,没有经过验证。

票数 0
EN

Stack Overflow用户

发布于 2008-12-13 13:38:05

我也遇到过这样的问题,当一个客户想要到处都是“浮动”窗口的应用程序时。我使用的方法与本文中描述的方法类似:

http://www.vbaccelerator.com/home/NET/Code/Controls/Popup_Windows/Popup_Windows/article.asp

代码示例可在此处获得:

http://www.vbaccelerator.com/home/NET/Code/Controls/Popup_Windows/Popup_Windows/Popup_Form_Demonstration.asp

通过扩展这一点,我们创建了“浮动”窗口,类似于VS在调试代码时遇到运行时错误时所使用的窗口。

至少,阅读代码可能会给你一些洞察力,然而,quarrelsome的响应可能是更简单的解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/365657

复制
相关文章
Windows 窗体中的事件顺序
对于依次处理其中每个事件的开发人员,Windows 窗体应用程序中引发事件的顺序非常具有吸引力。 当出现需要谨慎处理事件的情况时(例如,在重绘窗体的某些部件时),有必要了解运行时引发事件的确切顺序。 本主题提供了应用程序和控件的生存期中几个重要阶段中的事件顺序的详细信息。 有关鼠标输入事件的顺序的特定详细信息,请参阅Windows 窗体中的鼠标事件。Windows 窗体中的事件的概述,请参阅事件概述。 有关事件处理程序的构成的详细信息,请参阅事件处理程序概述。
CNXY
2019/05/24
1.2K0
如何在linux终端中修改窗体标题?
一、命令行方式: 使用转义码字符 echo -e "\033]0;我的虚拟终端窗体标题3\007" 终端标题被改变 使用转义字符 echo -n $'\e'"]0;我的虚拟终端窗体标题"$'\a' 另一种方式的标题改变,都是bash脚本 说明 : '\e'就是ESCAPE键的转义字符,ASCII码33使用八进制表示就是033,转义表示为\033,\e与\033是等价的。bash脚本, 第二种表示方式,不太符合常用的bash习惯,因为没有使用转义的表示,而是由三个输出字符串构成(为了防止每个输出换行,
马哥linux运维
2019/06/28
5.5K0
如何在linux终端中修改窗体标题?
如何在多线程中调用winform窗体控件
由于 Windows 窗体控件本质上不是线程安全的。因此如果有两个或多个线程适度操作某一控件的状态(set value),则可能会迫使该控件进入一种不一致的状态。还可能出现其他与线程相关的 bug,包括争用和死锁的情况。于是在调试器中运行应用程序时,如果创建某控件的线程之外的其他线程试图调用该控件,则调试器会引发一个 InvalidOperationException  本文用一个很简单的示例来讲解这个问题(在窗体上放一个TextBox和一个Button,点击Button后,在新建的线程中设置TextBo
菩提树下的杨过
2018/01/22
2.3K0
[视频]如何在Windows上一键安装PHP环境
如何在windows搭建PHP开发环境?我们可以使用wampserver,基础的学习与开发环境可以快速搭建,避免繁琐的配置过程。可能用到的工具链接 wampserver2.5版本windows 64位
极客开发者
2022/01/18
7460
如何在Windows中运行bash
当微软宣布,将在Windows10上面支持bash时,所有的Unix命令行用户都为之雀跃了。上周三,微软发布了一个测试版本,开始支持了这项功能。 为了运行bash,首先要进行几步操作。首先,需要获得Windows10的build 14316。 安装内测版本之后,用户需要切换到开发者模式,从设置>更新(Settings > Updates),安全>开发者(Security > For Developers)打开新的设置页面,选择“Windows Subsystem for Linux (Beta)”,重启
CSDN技术头条
2018/02/11
3.8K0
如何在Windows中运行bash
phpstorm中完成一键快速注释函数头
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/112733.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/08
3210
Pulumi 如何在 Windows 环境中设置
没有安装文件, Pulumi 没有安装文件,所以你不能按照下载后安装的方式来进行配置。
HoneyMoose
2021/05/21
2K0
Pulumi 如何在 Windows 环境中设置
如何在Linux中搭建Windows环境
众所周知,搭建网站最好用是Linux系统,但是有一些Windows软件没法运行在Linux服务器上,就很痛苦
雾海梦曦
2022/11/14
1.5K0
如何在Linux中搭建Windows环境
Java Swing中的透明窗体(Windows中消息提示框的制作)
首先需要在工程中导包,需要用到JRE中的rt.jar包,我的JDK安装在C盘,目录如下:C:\Program Files\Java\jre7\lib\rt.jar。
卡尔曼和玻尔兹曼谁曼
2019/01/25
2.2K0
Windows窗体应用类型的差异区别
最近在写小工具的时候,遇到一个坑点,项目的Debug/Release目录下一直有一个文件:项目名.runtimeconfig.json,还无法删除!删除了exe就跑不起来。
meteoric
2023/01/13
9270
Windows窗体应用类型的差异区别
windows完成端口(三)
系列目录 windows完成端口(一) windows完成端口(二) windows完成端口(三) windows完成端口(四) windows完成端口(五) windows完成端口(六) 1 现在还剩下最后一个问题,就是工作线程如何退出。当然你可以在每次判断标识位前先判断一个退出标识。但是如果工作线程正好被GetQueuedCompletionStatus挂载那里呢?如何唤醒,微软提供了另外一个函数:PostQueuedCompletionStatus,看下这个函数的签名: BOOL WINAPI Pos
范蠡
2018/04/24
1.4K0
windows完成端口(一)
系列目录 windows完成端口(一) windows完成端口(二) windows完成端口(三) windows完成端口(四) windows完成端口(五) windows完成端口(六) 本人很多年前接触完成端口以来,期间学习和练习了很多次,本以为自己真正地理解了其原理,最近在看网狐的服务器端源码时又再一次拾起完成端口的知识,结果发现以前理解的其实很多偏差,有些理解的甚至都是错误的。网络上关于windows完成端口的介绍举不胜举,但大多数都是介绍怎么做,而不是为告诉读者为什么这么做。看了很多遍小猪的讲解:
范蠡
2018/04/24
2.3K0
windows完成端口(五)
系列目录 windows完成端口(一) windows完成端口(二) windows完成端口(三) windows完成端口(四) windows完成端口(五) windows完成端口(六) #include "StdAfx.h" #include "IOCPModel.h" #include "MainDlg.h" // 每一个处理器上产生多少个线程(为了最大限度的提升服务器性能,详见配套文档) #define WORKER_THREADS_PER_PROCESSOR 2 // 同时投
范蠡
2018/04/24
1.9K0
C# 子窗体中调用父窗体中的方法(或多窗体之间方法调用)
本文转载:http://www.csframework.com/archive/2/arc-2-20110805-1771.htm
跟着阿笨一起玩NET
2018/09/18
8.4K0
C# 子窗体中调用父窗体中的方法(或多窗体之间方法调用)
windows完成端口(二)
系列目录 windows完成端口(一) windows完成端口(二) windows完成端口(三) windows完成端口(四) windows完成端口(五) windows完成端口(六) 1 不知道你是否记得前面中说过每消耗一个预先准备客户端的socket,就要补上一个。这个代码现在看来就应该放在连接成功事件里面了: DWORD ThreadFunction() { OVERLAPPED *pOverlapped = NULL; PER_SOCKET_CON
范蠡
2018/04/24
1.7K0
AngularJs中,如何在render完成之后,执行Js脚本
AngularJs是Google开源的前端JS框架。使用AngularJs, 我们能够容易地、健壮的开发出类似于Gmail一样的单页Web应用。AngularJs这个新兴的MVC前端框架,具有以下特点
庞小明
2018/03/07
2.7K0
如何在控件的设计时得到窗体设计器中的所有控件
本文转载:http://www.cnblogs.com/Ricky81317/archive/2007/01/04/611942.html
跟着阿笨一起玩NET
2018/09/18
1.2K0
windows完成端口(四)
系列目录 windows完成端口(一) windows完成端口(二) windows完成端口(三) windows完成端口(四) windows完成端口(五) windows完成端口(六) 下面给出上文中使用到的对完成端口模型封装的类的全部代码: /* ========================================================================== Purpose: * 这个类CIOCPModel是本代码的核心类, 用于说明W
范蠡
2018/04/24
1.7K0
windows完成端口(六)
系列目录 windows完成端口(一) windows完成端口(二) windows完成端口(三) windows完成端口(四) windows完成端口(五) windows完成端口(六) // 最后释放掉所有资源 void CIOCPModel::_DeInitialize() { // 删除客户端列表的互斥量 DeleteCriticalSection(&m_csContextList); // 关闭系统退出事件句柄 RELEASE_HANDL
范蠡
2018/04/24
1.5K0
点击加载更多

相似问题

Windows窗体的唯一键

12

如何在c# windows窗体中获取火基唯一键

14

在ComboBox windows窗体中自动完成

10

如何在windows窗体中更改窗体图标

60

在登录完成前显示windows窗体

18
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文