• winform布局、打开唯一窗体、构造函数传值


    (一)布局
    1.属性:
      Dock 根据需要,占满区域
      dock属性的顺序是按照拖入窗体的顺序来排的
      Anchor 可以确定与窗体上下左右的位置,来控制空间
      lcaction 定位
    2.容器(布局的时候一般都是先布局容器,在容器里面进行),容器里面可以放容器
      Panel 就相当于一个透明的div,是最基础的,其余的容器都是继承Panel,
      FlowLayoutPanel 流式布局的Panel
      GroupBox 也是一个Panel,多出了一个外部边框
      TabControl 选项卡
      SqlitContainer 分割容器
      Orientation 属性,水平垂直分割
      TableLayoutPanel 一个表格,每一个单元格只能放一个控件(里面可以放容器,然后再放多个控件)

    (二)构造函数传值
    1. 打开新窗体
      先实例化对象,对象.show();
    2.窗体之间传值(构造函数传值)
    例:
    form1是登入窗体,form2是登入跳转窗体,实现:从1登入打开2,1隐藏,关闭2窗体,1窗体也随着关闭
    form2中的代码:

    复制代码
    Form1 F1 = null;//定义form1
    public Form2(Form1 f1)//利用构造函数传入form1对象
    {
        InitializeComponent();
        F1 = f1;
    }
    //form2关闭的时候,关闭form1    
    private void Form2_FormClosing(object sender, FormClosingEventArgs e)
    {
        F1.Close();
    }    
    复制代码


    3.打开唯一窗体
    例:2个窗体,实现,在1打开2,且每次只能打开唯一,最小化之后在此点击按钮,焦点自动进入,且还原初始状态
    窗体1中的代码:

      

    复制代码
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace WindowsFormsApplication2
    {
    public partial class Form1 : Form
    {
    public Form1()
    {
      InitializeComponent();
    }
    List<Form> list = new List<Form>();//定义一个集合,存在打开的窗体
    private void button1_Click(object sender, EventArgs e)
    {
      Form2 f2 = new Form2(this);//将form1窗体传入form2
      bool has = false;//定义一个变量,
    foreach(Form ff in list)
    {
      if (ff is Form2) //判断
    {
      has = true;
      f2 = ff as Form2;//将ff转换成form2
    }
    
    
    }
      if (has)//集合中有f2
    {
    
      f2.WindowState = FormWindowState.Normal;//每次打开的时候窗体默认位置
      f2.Focus();//每次打开焦点进入
    
    }
    else
    {
    //集合中放入f2,并且打开
      list.Add(f2);
      f2.Show();
    
    }
    }
     //如果集合中有了窗体之后,在移除向对应的,如果不移除,关闭之后,集合中以后,就打不开新窗体了
    public void delete(Form f) 
    {
      list.Remove(f);
    }
    }
    }
    复制代码

    窗体2中的代码:

    复制代码
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace WindowsFormsApplication2
    {
    public partial class Form2 : Form
    {
        Form1 F1 = null;//定义变量接收f1
    public Form2(Form1 f1)
    {
        InitializeComponent();
        F1 = f1;
    }
    //关闭的时候移除对应的窗体,下次继续打开,否则关闭之后打不开
    private void Form2_FormClosing(object sender, FormClosingEventArgs e)
    {
        F1.delete(this);
    }
    
    }
    }
    复制代码
  • 相关阅读:
    【上线复盘】20190329-一个刷新数据的接口是如何导致几十万的订单数据错误
    VS------csc.exe已停止工作解决方法
    SQLServer------存储过程的使用
    SQLServer------聚集索引和非聚集索引的区别
    SQLServer------Sql Server性能优化辅助指标SET STATISTICS TIME ON和SET STATISTICS IO ON
    SQLServer------如何快速插入几万条测试数据
    SQLServer------如何让标识列重新开始计算
    SQLServer------begin tran/commit tran事务的使用方法
    SQLServer------插入数据时出现IDENTITY_INSERT错误
    Spring----Spring Boot Rest的使用方法
  • 原文地址:https://www.cnblogs.com/weiyu11/p/6802133.html
Copyright © 2020-2023  润新知