C# WinForm窗体

问题描述

我不想弹出那么多窗体,按一下“文件”弹出一个,再按下,就不弹了,可我按了4下,就出来4个窗体,有什么办法解决?有代码发代码,那什么boolisOpen=false;这类方法我试过了,不行,还有什么别的,能设置窗体属性的就说设置什么属性,用代码设置就发代码。

解决方案

解决方案二:
不要用SHOW,用showdialog
解决方案三:
非顶级窗体不能显示为模式对话框。在调用showDialog之前应从所有父窗体中移除该窗体。
解决方案四:
我这是MDI窗体,不是SDI
解决方案五:
判断该窗提是否已经存在,存在就RETURN。。。
解决方案六:
设个参数就可以搞定了啦
解决方案七:
怎么设参数?发代码,谢谢了!
解决方案八:
子窗体体设置成父窗体的全局变量,在要显示的时候加个判断:比如子窗体名为childFormif(childForm==null){childForm=newChildForm();}childForm.show();或者直接用ShowDialog()
解决方案九:
PatrickPan

首先是通过子窗体类型名来判断是否打开新的子窗体,还是把原有的子窗体进行显示。usingSystem.Reflection;///<summary>///Openchildwindow///</summary>///<paramname="ChildTypeString"></param>privatevoidOpenWindow(stringChildTypeString){FormmyChild=null;if(!ContainMDIChild(ChildTypeString)){//GetcurrentprocessassemblyAssemblyassembly=Assembly.GetExecutingAssembly();//CreatedatatypeusingtypestringTypetypForm=assembly.GetType(ChildTypeString);//Createobjectusingtype's"InvokeMember"methodObjectobj=typForm.InvokeMember(null,BindingFlags.DeclaredOnly|BindingFlags.Public|BindingFlags.NonPublic|BindingFlags.Instance|BindingFlags.CreateInstance,null,null,null);//Showchildformif(obj!=null){myChild=objasForm;myChild.MdiParent=this;myChild.Show();myChild.Focus();}}}///<summary>///Searchmdichildformbyspecifictypestring///</summary>///<paramname="ChildTypeString"></param>///<returns></returns>privateboolContainMDIChild(stringChildTypeString){FormmyMDIChild=null;foreach(Formfinthis.MdiChildren){if(f.GetType().ToString()==ChildTypeString){//founditmyMDIChild=f;break;}}//Showtheexistformif(myMDIChild!=null){myMDIChild.TopMost=true;myMDIChild.Show();myMDIChild.Focus();returntrue;}elsereturnfalse;}以上两部分就可以对于每个子窗体只创建一个实例。那么调用以上代码就非常简单了。如://Openamdichildformwhichtypenamed"MDIChild"OpenWindow(typeof(MDIChild).ToString());

解决方案十:
7楼的对,用ShowDialog()简单点
解决方案十一:
写一个单件模式
解决方案十二:
无法访问已释放的对象。对象名:“InsertData”。7楼的大哥,别忽悠我行不?第一次那样是不多弹了,可我关了再按文件,就异常````代码写死了啊
解决方案十三:
楼主大哥,你的InsertData是怎么定义的?要把它作为类的变量,而不是属于某个方法的局部变量。
解决方案十四:
办法是有,但都不是什么好办法等待高手
解决方案十五:
你新建一个Form,你看看它的代码,如果没有Windows窗体的设计代码,那就是我错了
解决方案:
mCh=newfrmChild;if(mCh.Created){mCh.BringToFront();}else{mCh=newfrmChild();mCh.MdiParent=父窗体;mCh.Show();}
解决方案:
写错一点,补充一下。frmChildmCh=newfrmChild();if(mCh.Created){mCh.BringToFront();}else{mCh=newfrmChild();mCh.MdiParent=父窗体;mCh.Show();}
解决方案:
publicpartialclassfrmMain:Form{.........frmChildmCh=newfrmChild();//是这里先定义一下。}以下代码是在frmMain里打开子窗体时使用。if(mCh.Created){mCh.BringToFront();}else{mCh=newfrmChild();mCh.MdiParent=this;mCh.Show();}
解决方案:
kankan
解决方案:
可以写这样一个方法解决问题,其中第一个参数是mdi父窗体,第二个参数是mdi子窗体的name属性。privatevoidShowSubForm(FormParentForm,stringSubFormName){FormchildForm;boolflag=false;if(ParentForm.MdiChildren.Length!=0){intchildCount=ParentForm.MdiChildren.Length;for(inti=0;i<childCount;i++){childForm=ParentForm.MdiChildren[i];if(childForm.Name==SubFormName){flag=true;childForm.Activate();break;}}}if(!flag){childForm=(Form)System.Reflection.Assembly.GetExecutingAssembly().CreateInstance("在这里写命名空间名称"+SubFormName);if(childForm==null){MessageBox.Show("没有找到窗口!");return;}childForm.MdiParent=ParentForm;childForm.Show();}}然后调用该方法就可以了。

时间: 2025-01-30 04:40:13

C# WinForm窗体的相关文章

邮件-c# winform 窗体保存值的问题

问题描述 c# winform 窗体保存值的问题 主窗体 form1 上面有个按钮button1 点击new到 from2 在form2中 有一个定时器 启动后 每30分钟 发送一封邮件 点击保存后from2 要变隐藏窗体 from2的事件一直在执行 现在回到form1 界面 又点击buttion1 new 到from2 又可以开始定时器了 所以说重复了 用单例模式有问题 隐藏的显示不了 我的目的就想 在form2 隐藏之后 点击from1 的button 1 不会重复启动form2 解决方案

WinForm窗体之间交互介绍

我们在做程序的时候遇到WinForm窗体之间交互的问题,这里把各种方法总结一下,内容比较确基础,适合刚入门的初学者,下面我们就一起来看看吧! 在窗体间传递数据的方法比较多: 1,在子窗体中自定义一个构造函数,参数类型是主窗体,当要显示子窗体的时候,就用这个构造函数来实例化子窗体,然后把this指针传进去,说起来太抽象了,我大概一写大家应该就明白了: publicclassfrmMain:Form { ... frmControlcontrolForm=newfrmControl(this); c

怎样在asp.net中嵌套winform窗体?

问题描述 怎样在asp.net中嵌套winform窗体?然后通过winform窗体来连接RFID来实现对读卡器进行读卡和写卡 解决方案 解决方案二: 解决方案三:两种方式1.ActiveX前提是浏览器认为你的控件是安全的2.WebBrowser自制浏览器用ObjectForScripting赋予脚本读写卡的方法然后Asp.Net里用脚本的external调用解决方案四:怎样在asp.net中嵌套winform窗体?答:不能.解决方案五:在server端引用之后调用部分功能是可以的.但在serve

winform-Siverlight中能否嵌入普通的WinForm窗体?

问题描述 Siverlight中能否嵌入普通的WinForm窗体? 想把普通的WinForm窗体应用嵌入到Siverlight中,实现网页化,不知是否能实现,请高手指点一下,不好意思,实现没有分. 解决方案 简单来说一句话,不可以. Siverlight是自己独立的runtime,而winforms则需要完整的.net框架. 抛开这个不说,浏览器为了安全起见,不允许直接运行本地代码,而sl的初衷就是设计一套可以在浏览器沙箱中运作的精简的runtime. 解决方案二: 你知道一个winforms程

winform 窗体实现数据从右向从滚动,怎么实现啊

问题描述 winform 窗体实现数据从右向从滚动,怎么实现啊 用了listview控件,但是他的宽度弄不成,滚动完一遍后,间隔时间很长再滚动,这样不行,数据多了会重叠. 解决方案 可以用timer控制整个数据控件的移动(控制left和top)或者可以讲数据动态绘制在界面上,类似心电图 解决方案二: 如果控件自带的功能不行,就自己代码控制实现.一般通过设置 Timer 就可以实现滚动效果. 解决方案三: 可以将需要滚动的东西放在一个panel中,用定时器整体移动.if (panel.Left <

listview里面可以嵌套一个winform窗体嘛

问题描述 listview里面可以嵌套一个winform窗体嘛 我先用listview显示了一些文件,如果双击文件想显示这个文件,需要嵌套下,请问有个啥思路,能不能这样实现请高手指点

c++-用WinForm 窗体 做一个音乐播放器程序。

问题描述 用WinForm 窗体 做一个音乐播放器程序. 能进行各种音频格式转换,快进,后退等操作.c#.c++.c语言 都可以.谢谢!!! 解决方案 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windo

wpf利用WindowsFormsHost加载了一个winform窗体,窗体内容变形了

问题描述 wpf利用WindowsFormsHost加载了一个winform窗体,窗体内容变形了 wpf利用WindowsFormsHost加载了一个winform窗体,窗体内容变形了怎么办? 解决方案 该问题已解决,.加载窗体的时候需要设置窗体的 obj.FormBorderStyle = FormBorderStyle.None; obj.StartPosition = FormStartPosition.WindowsDefaultLocation; obj.WindowState = F

winform中UseControl与winform窗体传值的问题

问题描述 winform中UseControl与winform窗体传值的问题 1.两个窗体Form1,Form2,一个UserControl 2.UserControl上有一个textBox 3.Form1中添加UserControl this.panel2.Controls.Add(control1); 4.想在Form2中获取UserControl上textBox的值,我得到的总是空的? 解决方案 这里应该用动态传值! form1里 public string PassText { get

c# winform窗体程序-C# winform 怎么做出这样效果(财务使用)

问题描述 C# winform 怎么做出这样效果(财务使用) 上部输入信息,当输入完成后回车信息添加到中部位置,这样的怎C# winform窗体程序怎么创建呢?谁知道的求教!