2017-5-9 打开唯一窗体的实例操作

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace 打开唯一窗体
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        List<Form> flist = new List<Form>();
        private void button1_Click(object sender, EventArgs e)
        {
            bool has = false;
            Form2 f2 = new Form2(this);
            foreach(Form f in flist)
            {
                if(f is Form2)
                {
                    has = true;
                    f2 = f as Form2;
                }
            }
            if (has)
            {
                f2.WindowState = FormWindowState.Normal;
                //焦点进入
                f2.Focus();
            }
            else
            {
                flist.Add(f2);
                f2.Show();
            }
        }
        public void deleteform(Form f)
        {
            flist.Remove(f);
        }
    }
}

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace 打开唯一窗体
{
    public partial class Form2 : Form
    {
        Form1 F1 = null;
        public Form2(Form1 f1)
        {
            InitializeComponent();
            F1 = f1;
        }

        private void Form2_FormClosing(object sender, FormClosingEventArgs e)
        {
            F1.deleteform(this);
        }
    }
}
时间: 2024-10-13 23:41:59

2017-5-9 打开唯一窗体的实例操作的相关文章

构造函数传值 和仅打开唯一窗体

登陆窗体: 制作一个登录窗口Form1,要求登陆后打开一个新窗口,隐藏该窗口(注:关闭新窗口时,该窗口不会关闭,程序未结束,需要用到构造函数传值来关闭新窗口的同时,关闭该登录窗口.) Form2 f2 = new Form2(this, user);//横线部分与下方讲的传值相对应 f2.Show(); this.Visible = false; 构造函数传值 将登陆窗口中输入的用户名传值给Form2窗体,Form2关闭时同时将Form1关闭 Form1 F1 = null; Users Use

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

制作登入窗体: 制作一个登陆窗体,实现点击按钮关闭此窗体并打开另一个窗体 直接在按钮点击事件中,实例化一个想要打开的窗体 使用show方法打开,并把登陆窗体的visible属性改为false Form1 f1 = new Form1(); f1.Show(); this.Visible = false; 另:这样写的话再关闭第二个窗口的时候,程序并没有完全结束,第一个登陆窗口仍然存在,虽然不显示 因此我们用到构造函数传值,并且这样可以实现打开唯一窗口(不重复打开同一个窗口) 构造函数传值: 构造

多窗体、窗体传值、打开唯一窗体操作

一.打开多子窗口 在控件中实例化要打开的窗体,再调方法show 例:在按钮中打开f2窗体 form2 f2=new form2() f2.show() 二.构造函数传值 1.在实例化中添加参数,展示信息类型,打开窗体类型 2.要打开窗体中构造函数接受 三.打开窗口唯一 1.实例化要打开窗口,并放到类型集合中 2.判断窗口是否在集合中,不在打开 3.构造函数传父级窗口 4.子级窗口关闭时调删除集合中子级窗口方法 例:

C#-WinForm-跨窗体 构造函数传值 及应用—登录式窗口传值、如何关闭主页面时关闭应用程序、如何打开唯一窗口—★★★★★五星重量级

构造函数可以传任意类型的值,并可以同时传多个值 结构函数传值的初步应用--简单的登陆式界面 现在我有两个窗体Form3和Form4,如下,如何点击Form3中的按钮后,打开Form4并将Form3中的textbox中的值传给Form4的label? 1.点击Form3中的按钮打开Form4 2.获取Form3中的值 3.传值给Form4中的label 一.获取Form3中textbox1的值 button1的点击事件: namespace 记事本 { public partial class F

【2017-04-27】布局及容器控件、打开多窗体、构造函数传值、打开唯一窗口

一.布局和容器控件 1.布局属性 - Anchor  控件定位锁死在那个位置,根据哪个位置锁死. - Dork     填充满.填充上下左右. - Location  位置. 2.容器控件 - Panel  相当于html中的div. - FlowLayoutPanel  继承自Panel,多了流式布局功能 - GroupBox    继承自Panel,多了一个标题,有小虚线. - TabControl  选项卡 选项卡修改标题,用选项卡的TabPages属性,在每个选项卡标题对应的Text属性

修改窗体,打开其他窗体

登陆窗体: 制作一个登录窗口Form1,要求登陆后打开一个新窗口,隐藏该窗口(注:关闭新窗口时,该窗口不会关闭,程序未结束,需要用到构造函数传值来关闭新窗口的同时,关闭该登录窗口.) Form2 f2 = new Form2(this, user);//横线部分与下方讲的传值相对应 f2.Show(); this.Visible = false; 构造函数传值 将登陆窗口中输入的用户名传值给Form2窗体,Form2关闭时同时将Form1关闭 Form1 F1 = null; Users Use

winform打开唯一窗口、构造函数传值

制作登录窗体: 制作一个登陆窗体,实现点击按钮关闭此窗体并打开另一个窗体 直接在按钮点击事件中,实例化一个想要打开的窗体 使用show方法打开,并把登陆窗体的visible属性改为false Form1 f1 = new Form1(); f1.Show(); this.Visible = false; 另:这样写的话再关闭第二个窗口的时候,程序并没有完全结束,第一个登陆窗口仍然存在,虽然不显示 因此我们用到构造函数传值,并且这样可以实现打开唯一窗口(不重复打开同一个窗口) 构造函数传值: 构造

主窗体里面打开子窗体&amp;&amp;打印饼图《Delphi 6数据库开发典型实例》--图表的绘制

\Delphi 6数据库开发典型实例\图表的绘制 1.在主窗体里面打开子窗体:ShowForm(Tfrm_Print); procedure Tfrm_Main.ShowForm(AFormClass:TFormClass);begin with AFormClass.Create(Self) do try ShowModal;  // 阻塞或者模态窗口,只有你把当前窗口关闭后,才能去操作父亲窗口. finally Free; end;end; //这个例子打开有异常,提示单元chart 引用本

winform 打开唯一窗口

打开唯一窗口  就三点 限制打开多个窗口 打开以后最小化再点打开按钮窗口出现点击按钮焦点出现在要打开的窗口上 List<Form>AllF=new List<Form>(); 建一个集合存放这个窗口 再一个窗口的打开按钮点击事件里 Form1 f1=new Form1(); foreach(Form ff in AllF)遍历这个集合{   if(ff is Form1)如果再这个集合内   { has=true;把查到的ff转换成Form1类型 f1  =ff as Form1;