zoukankan      html  css  js  c++  java
  • C# MDI应用程序

     MDI(Multiple Document Interface)应用程序,即多文档界面程序是允许创建在单个容器中包含多个窗体的应用程序。多文档揭秘那可同时打开多个文档,简化了文档之间的信息交换。

    MDI应用程序是由一个父窗体和多个子窗体组成。

    首先:创建父窗体 设置IsMdiContainer属性为true.

    其次:创建子窗体

            代码:父窗体按钮事件

    按钮事件
     private void button1_Click(object sender, EventArgs e)
            {
                Form2 f2 = new Form2();
                //ShowForm(f2);
                f2.MdiParent = this;
                f2.WindowState = FormWindowState.Maximized;
                //f2.Text = "新建文档" + intNumber++;
                f2.Show();
            }

    1.创建子窗体方法

    创建子窗体方法
     private void ShowForm(Form frm)
            {
                foreach (Form f in this.MdiChildren)
                {
                    if (f.Name == frm.Name)
                    {
                        f.Activate();
                        return;
                    }
                }
                frm.MdiParent = this;
                frm.WindowState = FormWindowState.Normal;
                frm.Show();
            }

    2.设置子窗体属性

        ChildForm frm = new ChildForm();

        frm.MdiParent = this;

        frm.FormBorderStyle = FormBorderStyle.None;

        frm.MinimizeBox = false;

        frm.MinimizeBox = false;

        frm.ShowIcon = false;

        frm.show();

        frm.Dock = DockStyle.Fill;//完全填充到应用程序

    3.某个子窗体只打开一次

    某个自窗体只打开一次
     private bool isExist(string ChildTypeName)
            {
                bool b_result = false;
                foreach (Form frm in MdiChildren)
                {
                    if (frm.GetType().Name == ChildTypeName)
                    {
                        frm.Activate();
                        b_result = true;
                        break;
                    }
                }
                return b_result;
            }
    private void button1_Click(object sender, EventArgs e)
            {
            //    Form2 f2 = new Form2();
            //    //ShowForm(f2);
            //    f2.MdiParent = this;
            //    f2.WindowState = FormWindowState.Maximized;
            //    f2.Text = "新建文档" + intNumber++;
            //    f2.Show();
                if (!isExist("Form2"))
                {
                    Form2 frm2 = new Form2();
                    frm2.MdiParent = this;
                    frm2.Show();
                }
            }

    4.排列子窗体

    public void LayoutMdi (MdiLayout value) 

    5.关闭某个开着的子窗体

    关闭某个开着的子窗体
     private void CloseChildForm(string  frmName)
            {
                for (int i = 0; i < this.MdiChildren.Length; i++)
                {
                    if (this.MdiChildren[i].Text  == frmName)
                        this.MdiChildren[i].Close();
                }
            }

    6.父窗体的TextBox接受子窗体TextBox输入

    子窗体textBox事件,首先设置父窗体TextBox作用域修改为public

    代码
     private void textBox1_TextChanged(object sender, EventArgs e)
            {
                TextBox text = ((Form1)this.MdiParent).textBox2;
                text.Text = textBox1.Text;
            }

    7.取出子窗体最大化时显示在父窗体MenuStrip菜单控件上的最大化 还原 空白等按钮

    父窗体MenuStrip菜单的ItemAdded事件

    View Code
     private void menuStrip1_ItemAdded(object sender, ToolStripItemEventArgs e)
            {
                if (e.Item.Text.Length == 0 || e.Item.Text == "还原(&R)" || e.Item.Text == "最小化(&N)")
                {
                    e.Item.Visible
                        = false;
                }
            }

    8.MenuStrip关联类

    ToolStripMenuItem 表示在MenuStrip或ContextMenuStrip上显示的可选择选项

    ContextMenuStrip 表示快捷菜单

    ToolStripDropDownItem 表示为派生自ToolStripItem的控件提供基本功能,当单击某个控件时显示下拉项

    9.MenuStrip菜单自动展开

    View Code
    private void 文件ToolStripMenuItem_MouseEnter(object sender, EventArgs e)
            {
                文件ToolStripMenuItem.ShowDropDown();
            }
    
            private void 文件ToolStripMenuItem_MouseLeave(object sender, EventArgs e)
            {
                文件ToolStripMenuItem.HideDropDown();
            }

    10.菜单根据子窗体进行变化

    通过设置AllowMerge MergeAction和MergeIndex属性。可以讲MDI子菜单追加到MDI父菜单,并且当关闭MDI子窗体时,可以从MDI夫窗体移除锁追加的菜单。

    //父窗体中设置
    this.文件ToolStripMenuItem.MergeIndex = 1;
    //子窗体中设置
    this.测试ToolStripMenuItem.MergeAction = System.Windows.Forms.MergeAction.Insert;
     this.测试ToolStripMenuItem.MergeIndex = 1;

    11.快捷菜单

    ContextMenuStrip控件

    12.RichTextBox控件 显示行号 列号

    View Code
    private void rtb_SelectionChanged(object sender, EventArgs e)
            {
                t1.Text = "Ln:" + (rtb.GetLineFromCharIndex(rtb.SelectionStart) + 1).ToString();
                t2.Text = "Col:" + (rtb.SelectionStart - rtb.GetFirstCharIndexFromLine(rtb.GetLineFromCharIndex(rtb.SelectionStart))).ToString();
            }

    注:本文整理自《C#编程网络大讲堂》!!!

  • 相关阅读:
    Win10导出查看删除已安装的证书
    Tomcat配置https访问
    SpringBoot启用https
    使用OpenSSL证书操作详解
    sed命令常用用法
    Jenkins安装第一个插件和通过离线安装包进行安装
    CentOS设置主机名称
    Jenkins使用过程中遇到的问题
    Visual Studio 最新插件
    文章去格式
  • 原文地址:https://www.cnblogs.com/YuanSong/p/2609995.html
Copyright © 2011-2022 走看看