首页 > 其他分享 >winform 同时打开多个窗体,获取当前操作(Active)的窗体.

winform 同时打开多个窗体,获取当前操作(Active)的窗体.

时间:2024-10-12 10:52:22浏览次数:9  
标签:打开 Form ContainsFocus 窗体 Active winform 属性

最近工作项目中使用winform开发时碰到这样一种场景,同时打开了多个Form页面且没有隐藏Hide(),需要获取当前正在操作Avtive的页面,在被窗体调用的控件中可以使用This.ParentForm获取,但如果是普通功能类则无法使用这种方式获取,使用Form窗体静态属性Form.ActiveForm直接取值,不止为何为Null,。

  于是从应用程序管理的Application.OpenForms属性着手,类型为FormCollection,储存所有打开未关闭的From窗体(包含Hide()隐藏的窗体)。遍历form调用属性发现没有Active公开属性可以调用,于是尝试了Visible/Canfocus/Enabled/CanSelect/ContainsFocus几个bool属性,看能否判断出当前ActiveForm,调试发现Hide()的窗体除了Enabled=true,其他4个Boo均为False,与之相反,未隐藏的所有打开窗体则Visible/Canfocus/Enabled/CanSelect属性值均为True, 对于当前操作的打开窗体则还有ContainsFocus属性为True,所有通过ContainsFocus可以区分所有打开的窗体中的当前选中的Active窗体。代码如下:

  

1 Form activeForm= null;
2 foreach (Form item in Application.OpenForms)
3 {
4     if (item.ContainsFocus)
5     {   //当前活动窗体
6         activeForm= item;
7         break;
8     }
9 }    

 

标签:打开,Form,ContainsFocus,窗体,Active,winform,属性
From: https://www.cnblogs.com/wutongcoding/p/18459932

相关文章

  • Qt - 将窗体变为顶层窗体
    1、将窗体变为顶层窗体(activateWindow();和raise())我们知道,在windows上通过鼠标双击某应用程序图标,该应用程序往往会以顶层窗口的形式呈现在我们面前,但是对于一个已经打开的非顶层窗口,我们怎么将其激活为顶层窗口呢?       要达到激活,这个必须要满足两个条件,第一,必须......
  • 界面控件DevExpress WinForms v24.1新版亮点 - 可访问性和UI自动化增强
    DevExpressWinForms拥有180+组件和UI库,能为WindowsForms平台创建具有影响力的业务解决方案。DevExpressWinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!DevExpressWinForms控件v24.1日前已经全新发布,新......
  • C# WinForms 中嵌入 EXE 程序 打开外部的exe程序
    publicclassProcessEmbedder{//常量定义privateconstintGWL_STYLE=-16;//窗口样式privateconstintWS_VISIBLE=0x10000000;//可见窗口样式//导入user32.dll中的SetParent函数,用于设置窗口的父窗口[DllImport("user32.dll",......
  • DevExpress WinForms中文教程:Data Grid - 如何完成数据输入验证?
    本教程介绍DevExpressWinForm的DataGrid控件是如何利用网格组件完成数据输入验证的。P.S:DevExpressWinForms拥有180+组件和UI库,能为WindowsForms平台创建具有影响力的业务解决方案。DevExpressWinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是......
  • 窗体MainWindow的属性设置2
    文章目录1.控件名称2.菜单栏A.一级菜单B.子菜单①子菜单添加快捷键②子菜单添加图标3.工具栏A.将子菜单移除工具栏B.移除工具栏4.状态栏A.移除状态栏B.状态栏显示信息状态栏一直显示信息  本章将主要介绍窗体MainWindow控件的属性设置,例如控件名称、菜单栏、......
  • [Vue] Reactive note
    <template><div> count:{{count}} </div><div> doubled:{{doubledCount}} </div> <button@click="increase">increase</button></template><scriptsetup>import{computed,ref,......
  • winforms基本操作-将datagridview内容保存为excel文件
    这里记录一下将winforms展示的datagridview,导出或保存为excel文件。这里说一下环境、版本信息:win系统:win11框架:winforms依赖:Microsoft.Office.Interop.Excel.net:8.0.401.netframework:4.8DataGridView对象为dataGridView1,然后添加一个按钮,绑定事件btnConfirm即可。priva......
  • Winform控件优化之圆角按钮【各种实现中的推荐做法】
    简介: Windows11下所有控件已经默认采用圆角,其效果更好、相对有着更好的优化...尝试介绍很常见的圆角效果,通过重写控件的OnPaint方法实现绘制,并在后面进一步探索对应的优化和可能的问题Windows11下所有控件已经默认采用圆角,其效果更好、相对有着更好的优化,只是这是默认的行为......
  • Winform控件优化之自定义控件的本质【从圆角控件看自定义的本质,Region区域无法反锯齿
    自定义控件的本质自定义控件的本质只有两点:重绘控件Region区域(圆角、多边形、图片等),这是整个控件的真实范围。缺点是Region无法抗锯齿,自定义的Region范围是有锯齿的,无法消除;此外新的Region还会和绘制的背景产生1像素的白边(在圆角或图形拐角部分),且几乎无法有效的消除。【后......
  • 五,MyBatis-Plus 当中的 “ActiveRecord模式”和“SimpleQuery工具类”(详细实操)
    五,MyBatis-Plus当中的“ActiveRecord模式”和“SimpleQuery工具类”(详细实操)文章目录五,MyBatis-Plus当中的“ActiveRecord模式”和“SimpleQuery工具类”(详细实操)1.ActiveRecord模式2.ActiveRecord介绍2.1ActiveRecord实现3.SimpleQuery工具类3.1SimpleQuer......