zoukankan      html  css  js  c++  java
  • WinForm 多窗体操作

    1多窗体操作:
    确定哪个是主窗体 通过窗体进入其他窗体 代码如下

    1 Form2 f2 = new Form2();//f2窗体实例化出来
    2 f2.Show();//进入f2窗体
    3 this.Hide();//将主窗体隐藏

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

    问题处理:构造函数传值,将窗体传到另一个窗体中去

     1 public partial class Form2 : Form
     2 {
     3 Form1 F1 = null;//在窗体2中将窗体1实例化出来
     4 public Form2(Form1 f1)
     5 {
     6 InitializeComponent();
     7 F1 = f1; //给F1赋值 
     8 }
     9 //找到窗体的属性 事件里面的Formclosing行为双击进入编写关闭代码;
    10 private void Form2_FormClosing(object sender, FormClosingEventArgs e)
    11 {
    12 F1.Close();关闭窗体2是窗体1关闭
    13 }

    2、窗体只能打开一个方法 代码如下

     1 //创建一个全局的泛型集合,为了放置全部打开的窗体
     2 List<Form> First = new List<Form>();
     3 //在窗体打开之前,判断集合中是否有name一致的窗体,如果有就说明已经打开了,就不要再打开了
     4 bool has = false;//定义中间变量,判断窗体是否打开
     5 Form2 f2 = new Form2();//f2窗体实例化出来
     6 foreach (Form F in First)//遍历集合中的窗体
     7 if (F.Name == f2.Name)//已经开启过
     8 {
     9 has = true;//将has赋值为true
    10 }
    11 
    12 if (has)//应经打开
    13 { 
    14 }
    15 else//没打开
    16 {
    17 First.Add(f2);
    18 f2.Show();//打开f2窗体
    19 }

    存在问题一:当窗体打开了,关闭后,就无法再次打开了

    解决办法:

     1 //当窗体关闭时,清除Form1中集合中的此窗体对象记录
     2 public void deleteform(Form F)//清除打开窗体的方法(函数)
     3 {
     4 First.Remove(F);
     6 }
     7 //关闭窗体2时调用此方法
     8 private void Form2_FormClosing(object sender, FormClosingEventArgs e)
     9 {
    10 if (F1 != null)
    11 {
    12 F1.deleteform(this);
    13 }

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

     1 bool has = false;//定义中间变量,判断窗体是否打开
     2 Form2 f2 = new Form2();//f2窗体实例化出来
     3 foreach (Form F in First)//遍历集合中的窗体
     4 if (F.Name == f2.Name)//已经开启过
     5 {
     6 has = true;//将has赋值为true
     7 F.WindowState = FormWindowState.Normal;//找到已打开对象,将WindowState属性设置为:Normal
     8 F.Focus();//设置焦点
     9 
    10 }
    11 
    12 if (has)//应经打开
    13 { 
    14 f2.close(); 
    15 }
    16 else//没打开
    17 {
    18 First.Add(f2);
    19 f2.Show();//打开f2窗体
    20 }

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

    传值:构造函数传值

    第一步,找到窗体对象,
    第二步:将窗体对象的控件值更改
    注意:要将窗体中的对象访问权限修改
    找到窗体里的Form1.Designer.cs
    进入修改对象的访问权限

    将private 改为 public

    4、提示框类型的窗体

    ShowDialog();

    作用:只能操作show的窗体,当关闭时才能操作别的窗体

  • 相关阅读:
    CodingSouls团队-个人博客(八)
    CodingSouls团队-个人博客(七 )
    vuedraggable
    idea创建springboot(脚手架创建)
    线上环境解决nginx访问laravel除了根目录全是404的问题
    前端使用工具网站
    阿里云内容协作平台(ccp)的基本使用
    photoshop CS6修改启动界面
    laravel 增强代码提示功能插件(barryvdh / laravel-ide-helper)
    laravel代码调试工具(laravel/telescope)
  • 原文地址:https://www.cnblogs.com/fuze/p/5896248.html
Copyright © 2011-2022 走看看