Winform 控制同一窗体只能打开一次的方法!

C#中Winform开发限制同一窗口打开一次的方法 本文介绍Winform中实现单实例窗口的两种方法。第一种通过窗口名称检查:使用字典存储已打开窗口,当再次调用时激活已有窗口而非新建实例。若窗口不存在,则通过反射动态创建对应窗体。第二种方法直接传入窗体对象,检查该对象是否已存在,若存在则激活,否则显示新窗口。两种方式都能有效避免同一窗口多次打开,第一种更具通用性,第二种则更直接简单。 阅读详情

方法一:

        /// <summary>
        /// 控制只弹出一个子窗体
        /// </summary>
        /// <param name="type">子窗体类型</param>
        public void FilmShow(Type type)
        {
            Form[] f = this.MdiChildren;
            foreach (Form form in f)
            {
                if (form.GetType().Name == type.Name)
                {
                    form.Dock = DockStyle.Fill;
                    form.Activate();
                    return;
                }
            }
            Assembly a = Assembly.GetExecutingAssembly();
            Form ff = (Form)a.CreateInstance(type.FullName);
            ff.MdiParent = this;
            ff.Dock = DockStyle.Fill;
            ff.Show();
        }

 

方法二:

        public bool checkchildFrmExist(string childFrmName)
        {
            foreach (Form childFrm in this.MdiChildren)
            {
                if (childFrm.Text.ToString() == childFrmName)
                {
                    if (childFrm.WindowState == FormWindowState.Minimized)
                    {
                        childFrm.WindowState = FormWindowState.Normal;
                    }
                    childFrm.Activate();
                    return true;
                }
            }
            return false;
        }

 

模式窗体的控制:

 

        /// <summary>
        /// 该窗体以模式窗体形式弹出
        /// </summary>
        /// <param name="type"></param>
        public void FilmShowDialog(Type type)
        {
            Form[] f = this.MdiChildren;
            foreach (Form form in f)
            {
                if (form.GetType().Name == type.Name)
                {
                    form.Activate();
                    return;
                }
            }
            Assembly a = Assembly.GetExecutingAssembly();
            Form ff = (Form)a.CreateInstance(type.FullName);
            ff.ShowDialog();
        }

 

Winform跨窗体操作控件(使用委托) Winform跨窗体操作控件是winform开发中很常见的形式,最常见且简单有效的方式便是使用委托的方式来进行操作,下面我将通过一个小实例来说明如何使用委托跨窗体实现控件操作。 实例介绍:两个窗体,Form1按钮打开Form2,然后在Form2的TextBox输入值在Form1的TextBox中显示出来。 一、项目结构 Form1窗体设计: Form2窗 阅读详情

相关推荐

PowerShell:如何用PowerShell创建WinForm窗体?-在PowerShell中使用GUI界面

从印度小哥那里受到启发,PowerShell不止可以做批处理,自动化。还能做界面做GUI,也能实现很好的交互。因为PowerShell是可以和.Net 程序无缝集成的。所以.Net能用的东西在PowerShell里也几乎都能使用。那么如果想让PowerShell的交互性更强,更友好无疑是创建一个友好GUI界面了。本文介绍如何在PowerShell中创建窗体程序。

码农杰克 6467

c#winform/wpf限制只能运行一个(互斥体)

在wpf中需要在app.xaml.cs里面写这段代码。

weixin_58760781的博客 857

C#实现限制只能启动一个WinForm进程的两种方法

的互斥体来确保只有一个进程可以获得对互斥体的所有权。如果当前进程能够成功获取互斥体的所有权,那么它就是第一个启动的进程,并且可以继续执行应用程序的逻辑。否则,如果无法获取互斥体的所有权,说明已经有一个进程在运行该应用程序,我们可以弹出一个消息框来提示用户。使用互斥体是一种简单直接的方法,而使用进程命名管道则更加灵活,可以进行更多的进程间通信操作。否则,如果连接超时,则说明没有其他进程在运行,我们可以继续执行应用程序的逻辑。进程命名管道是一种高级的进程间通信机制,可以用于实现进程之间的通信和同步。

XisVisual_Basic的博客 1088

C# 单例模式(一个窗体只能打开一次子窗体)

单例模式(一个窗体只能打开一次子窗体)

m0_47020592的博客 1286

C# WinForm委托与事件实战:子窗体控制及数据传递

本文还有配套的精品资源,点击获取 简介:在C# WinForm应用程序开发中,通过委托实现子窗体和主窗体之间的事件绑定和数据传递是一种常见需求。文章以VS2008环境为例,演示如何定义委托和事件来实现在子窗体操作后更新主窗体的数据或UI,以及如何从主窗体向子窗体传递参数。详细步骤包括在主窗体中声明委托和事件,在子窗体中触发事件并传递值,以及在主窗体中订阅和处理这些事件。掌握...

weixin_31139479的博客 2880

Winform只允许打开一个实例

Winform窗体只允许打开一个实例。第二次打开报错。

让WinForm打开一次的3个办法

在开发实践中,我们有时会限制对某些窗体的操作行为,比如让用户只对某个窗体打开一次。对于这种行为,我们不能能对用户说“这个菜单项你只能点击一次,当窗口打开后就不能再点击它了”。作为有责任心的程序员们,都会想办法解决这个问题。在处理这个问题上,我前后想出了两个办法,第一个办法实实在在地解决了问题;第二个办法将实现封装到了简单的接口中。办法一: 创建一个共享变量,将窗体当前的引用保存到里面,

欢迎来到我的博客!我是一名拥有20年以上经验的系统架构师。作为一名技术爱好者,我相信技术的力量可以改变世界。 3059

C# winfrom 只允许开启一个.EXE

此代码功能是设置应用程序 只是允许开启一个.EXE 并最前端显示 可以保持程序之前的状态。例如,之前最大化,当你最小化后,在开启新的应用程序 程序会最前段保持最大化显示

C# 编写 WinForm 窗体应用程序(第一期)

WinForm 是 Windows Form 的简称,是基于 .NET Framework 平台的客户端(PC软件)开发技术,一般使用 C# 编程。C# WinForm 编程需要创建「Windows窗体应用程序」项目。

生产队的刘同学 8305

揭秘cocos-mcp:如何用AI助手提升CocosCreator游戏开发效率

本文深入介绍了cocos-mcp工具,它作为连接AI助手与CocosCreator编辑器的桥梁,遵循MCP协议,能显著提升游戏开发效率。通过自然语言指令,开发者可让AI直接查询场景结构、批量修改属性或生成上下文代码,将重复操作变为智能调度,实现从“手动操作者”到“指令指挥官”的工作流变革。

weixin_29001683的博客 1051

使用STM32制作简易数字时钟

连接LED数码管的电源和地线到STM32单片机的对应引脚,将数码管的A、B、C、D引脚连接到STM32单片机的I/O口引脚。通过编写和调试这个项目,可以熟悉STM32单片机的GPIO口和定时器的使用,以及数字显示的控制。步骤六:测试和调试 通过观察数码管的显示,可以验证时钟功能是否正常工作。步骤四:编写代码 在主程序中,我们将使用定时器中断来控制时钟的运行,并使用GPIO口控制LED数码管的显示。步骤五:编译和下载 编译代码并下载到STM32单片机中,通过调试器和串口监视器进行调试和查看输出结果。

qq_67153941的博客 1303

在Winform中实现按键单击打开子窗体

在winform中实现按键单击打开子窗体

RoseJFrame的博客 2845

Python爬虫实战:手把手教你用Selenium绕过药监局网站的反爬机制(附完整代码)

本文详细介绍了如何使用Selenium绕过药监局网站的反爬机制,提供了一套完整的Python爬虫实战方案。通过浏览器指纹伪装、动态等待策略、会话维持技巧以及分布式采集设计,帮助开发者高效爬取药监局数据,解决政府类网站常见的反爬挑战。

weixin_42620255的博客 738

C# Winform 多窗体切换方式二

在 Winform 开发中,多窗体的切换是一个常见的需求,比如登录成功后,切换至主界面,同时关闭登录界面,看似简单的需求,如果在别的框架里是很容易实现的,在 Winform 你如果按同样的逻辑写 this.Close();你就会发现软件直接闪退了,因为 Winform 存在一个主线程概念,如果主线程关闭,那么当前软件所有的窗体都会随之关闭,这时你就会去查相关的资料,你会发现有的用的 form2.Show();这种方式,这种方式其实也不是特别好,切换一两个窗体还好,如果窗体太多了,那代码就非常的难看。

熊思雨的博客 4080

微磁模拟实战指南:从OOMMF安装到首个3D模型运行

本文详细介绍了OOMMF微磁模拟软件的安装与使用,从环境配置到首个3D模型运行的完整教程。涵盖Windows、Linux和macOS平台的安装避坑指南,以及MIF文件编写、并行计算优化等实战技巧,帮助研究人员快速掌握这一开源工具在磁畴壁运动、磁滞回线等微磁学问题中的应用。

weixin_29294597的博客 153

wvp gb28181 pro 平台国标级连功能说明

国标28181不同平台之间支持两种连接方式,平级和上下级,WVP目前支持向上级级联。

zengliguang的专栏 3888

C#之基于winform窗体绘制简单图形

什么是窗体? 可以理解为是一个自定义的控制台应用程序。 假如需要仅仅是用vs制作游戏的话,那么vs中,我们平时所用到的控制台应用程序所呈现的窗口时远远不够用的。因此需要自定义窗体。 因此在新建项目时,我们不能再使用控制台应用程序,而是应该选择窗体: 之后就完成了窗体的新建。 这里可以给大家直接运行我们新建好地窗体: 如下弹出地窗口就是我们新建好的窗体。由于我们没有对窗体进行任何操作,所以当前窗体是一片空白的。 其次,完成之后会在工程目录下发现如下几个文件: Form1.cs.

qq_51196701的博客 1万+

前端技能树,面试复习第 54 天—— 手写代码:情景题

前端修罗场提供全网最专业的前端优质文章与社区服务,为应届生,初中级前端工程师提供全面、优质的面试服务、技能提升、职场解惑服务!内容包含:前端面试辅导,前端面试题,前端交流,前端答疑,前端基础知识,前端知识体系,技能树搭建,Javascript,CSS,CSS3,HTML,React,Vue,小程序,前端简历,职业交流,远程工作,英文交流,英文提升,外企,互联网,国企,大厂,牛客面试题,掘金面试题,面经,优质前端文章分享...

前端进阶之路 | 中大厂、外企、国企内推 | 面试培训 | 简历修改 986

c# 控制winform程序只能打开一个

这是完整的代码,你加在你的程序里面就可以了 using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using System.Threading; using Sy

bjut_yue的专栏 1534

防护装备穿戴检查:基于YOLOv8与UI界面的深度学习应用

通过结合YOLOv8模型与UI界面,本系统实现了防护装备穿戴检查的自动化。该系统能够快速识别工作人员是否正确佩戴了所需的防护装备,帮助提高安全管理水平。未来,随着技术的发展,防护装备穿戴检查系统将在更多领域得到应用,如工业现场、建筑工地等,实现更加精确和高效的实时监控。

YOLO 355

【云原生进阶之容器】第六章容器网络6.6.2--Cilium部署

部署Cilium非常简单,可以通过单独的yaml文件部署全部组件(目前我使用了这个方式部署了1.7.1版本),也可以通过Helm Chart一键完成。重要的是部署环境和时机:官方建议所有部署节点都使用Linux最新稳定内核版本,这样所有的功能都能启用。作为一个Kubernetes网络组件,它应该在部署Kubernetes其他基础组件之后,才进行部署。

junbaozi的专栏 793

Winform应用程序 控件 窗体 事件

Winform 是一种智能客户端技术,我们可以使用winform应用程序帮我们获取信息,或者传输信息。 winform UI界面语言:XAML 常用窗体属性: 快捷键:【F4】 调出 ClientSize 客户操作【界面大小】,【不计算】窗体边框和边界距离 Size 整个【窗体大小】 Name 窗体【对象命名】 Text 窗体【文本内容】 WordWrap 指示文本框是否【换行】 Passwor...

喵毛的博客 2161

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

使用控制台调试WinForm窗体程序

1.程序代码结构 2.Win32DebuggerHelper.cs using System.Runtime.InteropServices; /* TODO:使用方法 Win32.AllocConsole(); Console.WriteLine(@"我是调试信息:目前已经运行到加载事件中"); */ name...

weixin_30426065的博客 676

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【C#】 WinForm窗体应用程序学习笔记 (一)

WinForm窗体应用程序学习笔记(一) 由于控制台应用程序的运行结果都是通过控制台输出的,不能提供良好的用户体验,为此,C#提供了WinForm窗体应用程序。WinForm具有一系列丰富的控件,用于创建基于Windows的应用程序。每一个控件模型都相当于一个类,通过继承和扩展这些控件类来使Windows界面变的更加好看、更加具有交互性。 友情链接: WinForm窗体应用程序学习笔记(一)...

lesileqin的博客 2万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

C# WinForm 点击按钮显示唯一窗体

C# WinForm点击按钮只显示唯一窗体

qq_43022415的博客 2885

winform模式窗体

何谓模式窗体?简单的可以理解为窗体对话框,用户必须在完成该窗体上的操作或关闭窗体后才能返回打开此窗体的窗体。本文不对模式窗体的定义、特征、功能做具体讨论,主要把重点放在如何在.net窗体应用程序中有效的使用模式窗体,解决使用模式窗体中碰到的常见问题。   模式窗体的属性设置 在.net中一个System.Windows.Forms.Form类就表示一个窗体,通过visual stud

zuiyuezhou888的专栏 4084
上一篇: 网线的做法与局域网组建
ICANNER
博客等级 码龄18年 17粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值