关闭主进程和弹出唯一窗体

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 WindowsFormsApplication8
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text == "feng" && textBox2.Text == "123")
            {
                Form2 f2 = new Form2(this);
                f2.Show();
                this.Hide();
            }
            else
            {
                MessageBox.Show("输入有误!");
                return;
            }
        }
    }
}

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 WindowsFormsApplication8
{
    public partial class Form2 : Form
    {
        Form1 F1;
        public Form2(Form1 f1)//窗体传值
        {
            InitializeComponent();
            F1 = f1;
        }

        private void Form2_FormClosed(object sender, FormClosedEventArgs e)
        {
            F1.Close();//当form2关闭的时候,form1同时关闭
        }
        List<Form> list = new List<Form>();
        private void button1_Click(object sender, EventArgs e)
        {
            bool has = false;
            Form3 f3 = new Form3(this);
            f3.Owner = this;

            foreach(Form f in list)
            {
                if (f.Name == f3.Name)//判断一下是否有该窗体
                {
                    has = true;//如果有该窗体,记录一下
                    f.WindowState = FormWindowState.Normal;//窗体启动常规大小
                    f.Show();//已有的窗体显示
                    f3.Close();//新建的窗体关闭
                    f.Activate();//激活窗体并赋给它窗体
                }
            }

            if (has == false)//如果没有该窗体
            {
                f3.Show();//创建显示一个form3的窗体
                list.Add(f3);//添加form3窗体进入list集合中
            }
        }
        //当form3窗体关闭后,将form3窗体从list集合中移除
        public void deleteform3( Form3 f3)
        {
            List<Form> aa=new List<Form>();
            foreach(Form f in list )
            {
                if(f.Name!=f3.Name)
                {
                    aa.Add(f);
                }

            }
            list=aa;
        }

    }
}

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 WindowsFormsApplication8
{
    public partial class Form3 : Form
    {
        Form2 F2;
        public Form3(Form2 f2)
        {
            InitializeComponent();
            F2 = f2;

        }

        private void Form3_FormClosing(object sender, FormClosingEventArgs e)
        {
            F2.deleteform3(this);//移除form3窗体
        }
    }
}

时间: 2024-10-06 01:18:59

关闭主进程和弹出唯一窗体的相关文章

winform弹出唯一窗体的方法

Form1中btn1按钮点击show出Form2,当Form2处于开启状态时,再次点击btn1不会继续弹出窗体,而是将焦点定位至已开启的Form2上:当Form2关闭后,再次点击btn1则会show出一个新的Form2: Form1: //创建一个全局集合,用来放置已经show出的窗体对象 List<Form> list = new List<Form>(); //btn1点击事件: private void button1_Click(object sender, EventAr

MDI弹出唯一窗体

1 /// <summary> 2 /// 点击开启学生窗体 3 /// </summary> 4 /// <param name="sender"></param> 5 /// <param name="e"></param> 6 private void pictureBox6_Click(object sender, EventArgs e) 7 { 8 bool Has = false;

弹出唯一窗口

一.MDI窗体弹出唯一窗体 private void button1_Click(object sender, EventArgs e) { //设置一个bool变量,用来标记是否有已打开的重名窗口 bool has = false; Form1 form1 = new Form1(); //遍历mdi子窗口 foreach (Form form in MdiChildren) { //判断是否重名 if (form.Name == form1.Name) { //重名时has为true: ha

ShowDialog()弹出的窗体,关闭后,主窗体会闪烁的BUG

如图,要实现下列等待界面时,等待界面是以ShowDialog弹出的,发现关闭后,主窗体会闪烁一下的BUG,搞半天没搞明白啥原因. 过了几天后,搜索了下发现,在fm.ShowDialog(),显示出来时,其他位置再调用fm.Close(),后又调用了fm.Dispose(),注释掉了fm.Dispose()后,就好了.. ShowDialog()弹出的窗体,关闭后,主窗体会闪烁的BUG

winform弹出唯一的窗体

主入口窗体的后台代码 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 winform唯一弹窗 { public partial class Form1 : Fo

[King.yue]Ext.net 弹出Windows窗体注意的事项

页面的控件ID不能重复,否则会覆盖原控件. [King.yue]Ext.net 弹出Windows窗体注意的事项,布布扣,bubuko.com

离开(关闭)网页前弹出提示

<html><head><title>破碎锤皮碗</title><script language=javascript> var exittxt="源码爱好者";function realexit() {if(exittxt) event.returnValue = exittxt}</script><style> .time{color:#ffffff;font-family:verdana,gene

WPF的WebBrowser屏蔽弹出脚本错误窗体

WPF自带的WebBrowser在訪问一些有问题的网页时常常跳出非常多提示脚本错误的窗体, 可是WPF没有自带屏蔽这些窗体的方法或属性. 所以网上找来一使用反射的方法来屏蔽弹出脚本错误窗体的方法, 非常管用. 代码例如以下: public void SuppressScriptErrors(WebBrowser wb, bool Hide) { FieldInfo fiComWebBrowser = typeof(WebBrowser).GetField("_axIWebBrowser2&quo

用户关闭浏览器页器,弹出一个提示

function PageUnloader() { //當用戶退出時是否需要拋出一個提示 this.UnloadTips = true; var _this = this; this.Init = function() { //當用戶退出時拋出一個提示 window.onbeforeunload = function(e) { e = window.event || e; return _this.body_onbeforeunload(e); }; }; //Unload事件, 當用戶退出時是