zoukankan      html  css  js  c++  java
  • 多窗体与菜单、工具栏

    多窗体

    主窗体不关程序无法退出。

    主要有4点

    1、哪个是主窗体

    Form2 f2 = new Form2();
    f2.Show();
    this.Hide();

    打开form2窗口,隐藏form1窗口

    问题:主窗体隐藏了,关闭其它窗体后,没有将主窗体显示/关闭,那么程序就关不上了

    构造函数传值,将窗体传到另一个窗体中去

    2、

    2、窗体只能打开一个

    创建一个全局的泛型集合,为了放置全部打开的窗体
    1、在窗体打开之前,判断集合中是否有name一致的窗体,如果有就说明已经打开了,就不要再打开了

    bool has = false;
                Form2 f2 = new Form2();
                foreach (Form F in Flist)
                {
                    if (F.Name == f2.Name)
                    {
                        has = true;
                    }
                }
                if (has)
                {
    
                }
                else
                {
                    Flist.Add(f2);
                    f2.Show();
                }

    问题:当窗体打开了,关闭后,就无法再次打开了
    办法:当窗体关闭时,清除Form1中集合中的此窗体对象记录

    form1: 
       public void DelectForm(Form F)
            {
                Flist.Remove(F);//移除
            }
    
    
    form2:
     public partial class Form2 : Form
        {
            Form1 F1 = null;
            public Form2( Form1 f1)
            {
               
                InitializeComponent();
                F1 = f1;
            }
        
    
     private void Form2_FormClosing(object sender, FormClosingEventArgs e)
            {
                if (F1 != null)
                {
                    F1.DelectForm(this);
                }
            }


    问题:当窗体已经打开,再次点击打开按钮,不会将已打开的窗体重新显示并焦点进入
    办法:
    找到已打开对象,将WindowState属性设置为:
    找到已打开窗体的对象,使用Focus方法;

    F.Focus
    最小化,也弹出, 焦点进入

     F.WindowState = FormWindowState.Normal;

    3、窗体之间的传值和控制

    传值:构造函数传值

    控制:第一步,找到窗体对象,第二步,将窗体对象的控件值更改
    注意:要将窗体中的对象访问权限修改public

    form1:
     private void button1_Click(object sender, EventArgs e)
            {
                if (textBox1.Text == "liuxin" && textBox2.Text == "1234")
                {
                    Form2 f2 = new Form2(this,textBox1.Text );
    
    
                    f2.Show();
                    this.Hide();
    
    form2:
    public partial class Form2 : Form
        {
            Form1 F1 = null;
            public Form2(Form1 f1,string Uname)
            {
                InitializeComponent();
                F1 = f1;
                label1.Text = "欢迎回来"+Uname;
            }
        }


    4、提示框类型的窗体

    ShowDialog();

     Form2 f2 = new Form2(this,textBox1.Text);
                f2.ShowDialog();

    菜单和工具栏:

    1、MenuStrip:
    顶部菜单
    分割线:1、- 2、右键插入 split。。。

    快捷键:每一个项右键属性的最下面可以设置快捷键
    不管选项隐藏还是菜单隐藏,快捷键都管用

    2、ContextMenuStrip:
    右键菜单

    3、StatusStript:
    底部菜单

    4、ToolStrip
    工具条

    5、ToolStripContainer
    工具条容器

    作用:将窗体显示为模式对话框。 在调用Form.ShowDialog方法后,直到关闭对话框后,才执行此方法后面的代码

  • 相关阅读:
    【CQOI2015】网络吞吐量
    【SDOI2010】所驼门王的宝藏
    【NOIP2013】华容道
    【SNOI2019】通信
    【IOI2016】railroad
    【AtCoder3611】Tree MST
    【AtCoder2134】ZigZag MST
    【CF891C】Envy
    【BZOJ4883】棋盘上的守卫
    【CF888G】Xor-MST
  • 原文地址:https://www.cnblogs.com/yx1314520/p/5897671.html
Copyright © 2011-2022 走看看