zoukankan      html  css  js  c++  java
  • winform多窗体之间的操作

    1.通过操作一个窗体打开另一个窗体

    已有窗体为Form1.Form1中有一个按钮,对该按钮编写点击事件:

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

    通过这段代码来打开Form2.

    在实际应用中会出现代开Form2后需要Form1隐藏的情况,此时可以加入代码:this.Hide();来实现隐藏Form1.

    [不能关闭Form1,如果关闭Form1,那么Form2也会关闭,因为Form1是主窗体]

    2.在窗体之间进行值的传递

    在某些情况下,需要用到某个已经获取到的值,为了提高程序运行效率,不能再次查询这个值,这时候就需要传递值.

    窗体间值的传递需要用到打开窗体.

    Form2 f2 = new Form2(要传递的值);
    f2.Show();

    这个时候值已经传递到Form2去了,这时候需要考虑如何在Form2中取出这个值

    复制代码
    Users z = null;//根据值的类型实例化
    public Form4(Users a) //方法这里也要写要传入的值,注意类型
    {
    InitializeComponent();
    z = a; //这个时候值就传递进来了,因为值定义在方法外面,所有在这个命名空间里面可以随意调用
    }
    复制代码

    3.窗体唯一性设置

    打开一个窗体,这个窗体只能被打开一个,打开了一个,就不能再打开另一个窗体.

    单纯的能够打开一个:

    复制代码
    //实例化一个Form类型泛型集合,记录已经打开的窗体
    List<Form>AllF=new List<Form>();
    //点击事件,这里直接用大括号代替
    {
    //实例化一个点击要打开的Form1对象
       Form1 f1=new Form1();
    //判断AllF里面有没有Form1
    bool has=false;
    //遍历泛型集合,看看里面有没有这个要打开的Form1
    foreach(Form ff in AllF)
    {
       if(ff is Form1)//如果ff是From1类型
       {
         has=true;
        //把查到的ff转换成Form1类型
         f1  =ff as  Form1;
        }
    }
    //如果有Form1,证明已经打开了
       if(has)
      {
       //当窗体最小化的时候将其还原到打开的默认状态
       f1.WindowState=ForWindowState.Normal;
       }
    //如果没有说明还没有打开,那么打开Form1,并把Form1添加到集合AllF里
       else
       {
        AllF.Add(f1);
         f1.Show();
       }
    }
    复制代码

    这样实际实现了只能打开一个同样窗体的目的,但是这样有一个问题,就是打开一个窗体,关闭之后,就没法打开了.对此的解决发方法是:

    写一个方法,在Form1的关闭事件FormClosing里面,每当关闭的时候把Form1给移除.

    方法:

     public void Fclose(Form a)

    {

      AllF.Remove(a);

    }

    将这个页面的所有都传过去:

    //实例化一个点击要打开的Form1对象
       Form1 f1=new Form1(this);

    然后在Form1的关闭事件FormClosing里面,调用移除的方法即可.

  • 相关阅读:
    .NET Obfuscator Dotfuscator 入门
    查询集合已修改;可能无法执行枚举操作
    泛型(C# 2。0 编程指南) <一>
    在服务器上部署VS 2008 ReportViewer,完美支持中文
    dataGridView 闪烁 和 listview 闪烁 的解决办法。
    Asp.Net 调试客户端脚本
    疑是Microsoft Enterprise Library June 2005的一个小bug (续)
    MagicAjax 0.30版的更新(翻译)
    疑是Microsoft Enterprise Library June 2005的一个小bug
    在web页面中水晶报表显示速度过慢的原因
  • 原文地址:https://www.cnblogs.com/weiyu11/p/6798692.html
Copyright © 2011-2022 走看看