MDI-设置子窗体只能弹出一个

不足之处,欢迎指正!

什么是MDI..我表示不知道的呢。

MDI(Multiple Document Interface)就是所谓的多文档界面,与此对应就有单文档界面 (SDI), 它是微软公司从Windows 2.0下的Microsoft Excel电子表格程序开始引入的,Excel电子表格用户有时需要同时操作多份表格,MDI正好为这种操作多表格提供了很大的方便,于是就产生了MDI程序。--度娘如此解释

新建一个WindowForm程序。得到一个窗体作为我们父窗体Parent。拖入一个menustrip空间。在新建一个窗体FrmChildren作为我们子窗体

代码如下

public Form1()
        {
            InitializeComponent();
            //将Form1设置为MDI窗体,当然在Form1的IsMdiContainer属性页可以设置
            this.IsMdiContainer = true;
        }

在menustrip打开子窗体的事件代码如下:

 private void tsmiOpenWindow_Click(object sender, EventArgs e)
        {
            FrmChildren child = FrmChildren.GetWindow();//调用方法
            child.MdiParent = this;//设置child的父窗体为当前窗体
            child.Show();

        }
GetWindow()这个方法在哪里呢。当然是在FrmChildren子窗体里面写
  public partial class FrmChildren : Form
    {
        private FrmChildren() //由 public FrmChildren改为 private FrmChildren
        {
            InitializeComponent();
        }
        static FrmChildren fc = null; 创建一个静态对象
        public static FrmChildren GetWindow()
        {   //当子窗体没有开启或者已经释放。就可以创建新窗体
            if (fc==null||fc.IsDisposed)
            {
                fc = new FrmChildren();
            }
            return fc;
        }
    }

第二种方法:

觉得很简单的呢。直接在在menustrip打开子窗体的事件下面写就ok了

private void tsmiOpenWindow_Click(object sender, EventArgs e)
{

#region 方法二Application收集打开的窗体,用索引器来寻找,就是窗体的Name属性
//方法二.如果没有Name为FrmChildren的子船体,实例化创建。和之前的正规做法没有什么差别,只是多了判断。
if (Application.OpenForms["FrmChildren"] == null)
{
FrmChildren child = new FrmChildren();
child.MdiParent = this;
child.Show();
}
else//有Name为FrmChildren的子船体,就直接show()
{
Application.OpenForms["FrmChildren"].Show();
}

#endregion

}

MDI-设置子窗体只能弹出一个

时间: 2024-10-09 06:14:26

MDI-设置子窗体只能弹出一个的相关文章

C# 设置MDI子窗体只能弹出一个的方法

Windows程序设计中的MDI(Multiple Document Interface)官方解释就是所谓的多文档界面,与此对应就有单文档界面 (SDI), 它是微软公司从Windows 2.0下的Microsoft Excel电子表格程序开始引入的,Excel电子表格用户有时需要同时操作多份表格,MDI正好为这种操作多表格提供了很大的方便,于是就产生了MDI程序. 新建一个WindowForm程序.得到一个窗体作为我们父窗体Parent.拖入一个menustrip空间.在新建一个窗体FrmCh

javaScript 弹出一个窗体

我们在做后台管理的时候经常需要弹出一个会话窗体,这是我们可以用框架带的接口来弹出,也可以用jQuery带的来弹出,并且现在jQuery被大量使用,所以还是这种好用点,不用额外引入其他的框架js资源. 如下就是一种弹窗: ① application.window.OpenWindowFn('${ctx}/escmauthority/initGetParentHelp.do?selfId='+selfId+"&auth_type="+auth_type+"&own

winform 加载窗体时弹出另一个窗体并显示进度条的源码

winform 加载窗体时弹出另一个窗体并显示进度条的源码 //frmA: 源窗体 //------------------------------------------ //引用 using System.Threading; BackgroundWorker worker; public frmA() { InitializeComponent(); worker = new BackgroundWorker(); worker.DoWork += new DoWorkEventHandl

window.open(); 子窗体的弹出

一,做项目遇到的小问题,点击一个图片链接,要求弹出一个窗体,原本是用的Response.Redirect();跳转到目标页面,为了美观改用弹出窗体: <a href="#" onclick="javascript:window.open( 'http://192.168.33.11/CordysSSO/Page/EditPwd.aspx', 'MySmart', 'top=255,left=280,toolbar=no,status=no,location=no,res

dev设置子窗体的初始位置,grid控件表头的属性设置

当在父窗体上弹出子窗体时,一般设置子窗体的初始位置是居中, //在需要展示子窗体的父窗体上写这段,注意必须设置在show方法之前Form2 f2 = new Form2(); f2.MdiParent = this; f2.StartPosition = FormStartPosition.CenterScreen; //CenterScreen相对于屏幕居中,CenterParent是相对于父窗体居中 f2.Show(); DEV中Grid禁用表头的右键菜单,设置属性如下图: DEV中Grid

如何弹出一个窗口气泡(使用定时器向上移动)

原文链接:http://blog.csdn.net/tangaowen/article/details/5108980 如何弹出一个窗口气泡 最近在工作中遇到这样一个需求,就是需要将一个窗口从右下角任务栏下面缓缓的上升到任务栏的上面,现在有很多的软件都有这样的气泡,比如:搜狗输入法的词条更新窗口,还比如CSDN的广告窗口等等. 1.首先 将要弹出的窗口移动到任务栏(当前屏幕)以下 2.然后,获得任务栏(本质是个窗口)的高度,这样就可以知道窗口最终的位置了 3.然后,计算获得窗口最终停止的位置:计

页面table的每行都有一个&lt;input type=&#39;button&#39; /&gt;,如何实现点击按钮在按钮下方弹出一个div,点击空白消失

\ <input id="test" type="button" />/*按钮*/ <div id="tanchu"></div> <script language="javascript"> $(document).ready(function(e) { $("#test").click(function(e) { $("#tanchu"

JavaScript基础 window.prompt() 弹出一个输入框 设置提示信息与默认值

镇场诗: 清心感悟智慧语,不着世间名与利.学水处下纳百川,舍尽贡高我慢意. 学有小成返哺根,愿铸一良心博客.诚心于此写经验,愿见文者得启发.------------------------------------------ code: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=ut

如何弹出一个对话框

怎么实现弹出一个对话窗口: JOptionPane.showMassageDiglog(null,"弹出的对话"); 在弹出的对话窗口输入并接收: String +a(变量名)  =JOptionPane.showInputDialog(null,"请输入"); 将接收的字符串转化为整形: int s(变量名)=Integer.parseInt(a); 将接收的字符串转化为double: double p(变量名)=Double.parseDouble(a); 其中