zoukankan      html  css  js  c++  java
  • Windows Form -----内容(8)

    窗体类型:
    SDI  MDI
    单文档窗体界面,多文档窗体界面

    一、单文档窗体界面:
    有一个主窗体,其它的窗体是辅窗体和对话框。
    主窗体一旦关掉,整个程序全部结束。

    案例一:如何做登录?
    1.确定好主窗体。在Program.cs文件中的Main函数,使用Application.Run()启动主窗体。
    Application.Run(new Main());
    2.做一个登录窗体。
        登录验证完成后,不要关闭窗体,也不要显示主窗体。只需要给this.DialogResult赋个值即可。
            private void button1_Click(object sender, EventArgs e)
            {
                //验证用户名和密码是否正确
                if (textBox1.Text == "aaa" && textBox2.Text == "bbb")
                {
                    this.DialogResult = System.Windows.Forms.DialogResult.OK;
                }
                else
                {
                    textBox1.Text = "";
                    textBox2.Text = "";
                }
            }
    3.在Program.cs的Main函数中,在Application.Run()运行主窗体之前,启动登录窗体(用对话框的形式启动)
    如果对话框返回成功的标识时,就运行下面的Application.Run();
                Form1 f = new Form1();
                DialogResult result = f.ShowDialog();
                if (result == DialogResult.OK)
                {
                    Application.Run(new Main());
                }

    二、多文档窗体界面:
    一个父窗体,里面包含多个子窗体。子窗体无法移到窗体外面,父窗体关掉子窗体全部关闭。
    1.确定父窗体。设置父窗体的属性:IsMdiParent = true
    2.做一个子窗体。
    3.在窗体的代码中,实例化子窗体。
    4.设置子窗体的属性:MdiParent,设置成父窗体对象
                ChildForm f = new ChildForm();
                f.MdiParent = this;    //这里的this代表的就是父窗体对象。
    5.显示子窗体
                f.Show();

    父窗体中的重要属性:
    IsMdiParent - 是否是父窗体    bool
    MdiChildren - 所有的子窗体的集合。    Form[]
    ActiveMdiChild - 当前正在顶层的子窗体。    Form

    案例一:使用菜单添加多个子窗体,关闭所有子窗体,关闭当前子窗体。

    案例二:只生成一个子窗体。如果已经有了一个子窗体的话,就不再添加新的子窗体。
    public partial class MDIForm : Form
        {
            public MDIForm()
            {
                InitializeComponent();
            }

            private void MDIForm_Load(object sender, EventArgs e)
            {
                OtherForm om = new OtherForm();
                om.MdiParent = this;
                om.Show();
            }

            private void 新建子窗体ToolStripMenuItem_Click(object sender, EventArgs e)
            {
                childForm child = new childForm();
                child.MdiParent = this;
                child.Show();
            }

            private void 关闭当前子窗体ToolStripMenuItem_Click(object sender, EventArgs e)
            {
                childForm child = this.ActiveMdiChild as childForm;
                child.Close();
            }

            private void 关闭所有子窗体ToolStripMenuItem_Click(object sender, EventArgs e)
            {
                foreach (childForm child in this.MdiChildren)
                {
                    child.Close();
                }
            }

            private void toolStripMenuItem1_Click(object sender, EventArgs e)
            {
                bool isExsite = false;
                foreach (Form child in this.MdiChildren)
                {
                    if (child is childForm)
                    {
                        isExsite = true;
                        break;
                    }
                }
                if (isExsite == false)
                {
                    childForm child = new childForm();
                    child.MdiParent = this;
                    child.Show();
                }
            }
        }

  • 相关阅读:
    php中常用的4种运行方式
    vue前后端分离项目,使用宝塔面板解决跨域问题,设置Nginx反向代理
    通过 Nginx 代理转发配置实现跨域(API 代理转发)
    ajax跨域,这应该是最全的解决方案了
    vue项目打包之后怎么在本地运行
    webpack打包vue项目之后生成的dist文件该怎么启动运行
    PHP7 windows增加自定义扩展和编译PHP源代码
    编写php自定义扩展
    PHP 扩展开发初探
    php实现伪静态以及定义原理
  • 原文地址:https://www.cnblogs.com/likaixuan/p/4506262.html
Copyright © 2011-2022 走看看