• 多窗体、菜单和工具栏


    一、多窗体

    form1 打开form2

    (1)不隐藏form1

    Form2 f2 = new Form2();
     f2.Show();//打开Form2

    (2)隐藏form1

    this.Hide();

    构造函数传值

    (1)传窗体

    Form1代码:
    
    Form2 f2 = new Form2(this);
    f2.Show();
    
    Form2代码:
    
    Form1 F1=null;//声明Form1
     public Form2(Form1 f1)//构造函数
      {
                InitializeComponent();
                F1 = f1;//将传进来的窗体赋给声明的值,这样才能在全局使用           
      }

    (2)传普通值

    Form1代码:
    
    Form2 f2 = new Form2(textBox1.Text);
    f2.Show();
    
    Form2代码:
    
    Form1 F1=null;//声明Form1
     public Form2()//构造函数
      {
                InitializeComponent();
    textBox1.Text = uname + ",欢迎您回来!";                       
      }

    关上form2form1也关闭

    form2关闭时,触发FormClosing事件,从而执行里边的语句

     private void Form2_FormClosing(object sender, FormClosingEventArgs e)
            {
                F1.Close(); //关闭form1           
            }

    提示框类型的窗体

    不关闭这个类型的窗体其它窗体不能操作

    将f2.Show();
    改成f2.ShowDialog();

    5  只显示一个窗体

    Form1代码:

     List<Form> list = new List<Form>();//定义全局变量,泛型集合接收打开的窗体
    private void button1_Click(object sender, EventArgs e)
            {
                if (textBox1.Text == "zhang" && textBox2.Text == "1234")
                {
                    bool b = false;//布尔类型,判断Form2是否已经打开
                    Form2 f2 = new Form2(this);//实例化Form2,创建出一个对象
                    foreach (Form f in list)//遍历集合,看看是否已经打开Form2
                    {
                        if (f.Name == f2.Name)//若集合中存在与Form2的name值相同的窗体
                        {
                            b = true;//true已经打开
                            f.WindowState = FormWindowState.Normal;//若最小化,让其正常显示
                            f.Focus();//将焦点移到Form2
                        }
                    }
                    if (b)
                    {
                        f2.Close();//若已经有打开的,将这个新打开的关闭,节省内存
                    }
                    else
                    {
                        list.Add(f2);//若没有打开的,将其添加到泛型集合
                        f2.Show();//打开Form2                   
                    }                                               
                }
            }
            public void delete(Form f)//从集合中移除一个窗体
            {
                list.Remove(f);
            }

    Form2代码

     Form1 F1=null;//声明Form1
     public Form2(Form1 f1)//构造函数
     {
                InitializeComponent();
                F1 = f1;//将传进来的窗体赋给声明的值,这样才能在全局使用          
      }
    private void Form2_FormClosing(object sender, FormClosingEventArgs e)
     {
                     F1.delete(this);//当关闭Form2时,调用Form1中定义的函数,删除集合中的Form2
     }

    6 窗体控制

    第一步,找到窗体对象,第二步,将窗体对象的控件值更改

    注意:要将窗体中的对象访问权限修改

    form2代码:
    private
    void button1_Click(object sender, EventArgs e) { if(F1!=null) { F1.button1.Text = textBox2.Text;//将form2中的值赋值给form1中的button1 } }

    二、菜单和工具栏

    1 MenuStrip 顶部菜单栏

    1)插入标准项:在这个控件上右键--插入标准项;

    2)分割线 :-  或 右键插入 Separator

    3)快捷键:

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

    ShortcutKeys 设置快捷键

    ShowShortcutKeys 快捷键是否显示

    2 ContextMenuStrip 右键菜单

    每一个控件都可以设右键菜单,在控件行为中ContextMenuStrip属性

    3 StatusStrip底部菜单

     可以放标签、进度条、菜单条

    4 TooplStrip 工具条

    5 TooplStripContainer 工具条容器 

    可将工具条放入其中

  • 相关阅读:
    系统调用与库函数
    在树莓派上 搭建sqlite数据库
    (转)inux Read系统调用
    查看当前日期是这一年的第几天
    求解某个范围内的全部完数
    求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。
    输入三个整数x,y,z,请把这三个数据由大到小输出。
    模仿ArrayList底层实现
    可视化日历
    Oracle之约束条件1:主键约束
  • 原文地址:https://www.cnblogs.com/zhang-dandan-1/p/5897732.html
Copyright © 2020-2023  润新知