Winform中Form.Show()和Showdialog()和Activate()方法的区别

本文详细介绍了Windows Forms中Show()、ShowDialog()以及Activate()方法的区别和用法。Show()方法允许用户同时操作主窗口和子窗口,而ShowDialog()会阻塞主窗口直到子窗口关闭。Activate()方法用于确保窗体始终在最前面。通过实例代码展示了如何在实际应用中创建、激活和显示子窗体。
摘要由CSDN通过智能技术生成

区别说明

  1. Show()出来的子窗口和主窗口之间不受影响,可以同时操作,Showdialog()出来的子窗口只能在关闭子窗口后才能操作主窗口
  2. Activate()是让窗体显示在前面
  3. 当通过new创建了一个Form窗体时,该窗体的Visible属性默认是false,即不显示该窗体,可以通过运行试试
  4. 所以可以通过Show()方法来将该窗体显示出来,如果是由不显示到显示,即第一次调用该窗体的Show()方法,则该窗体会显示在主窗体前面,但如果将鼠标切回主窗体,此时主窗体在前,再次调用该窗体的Show(),则子窗体不再在前显示。
  5. Show()方法和Hide()方法相对应
  6. 而Activate()方法就可以弥补4中的缺点,每调用一次Activate()方法,该窗体都会靠前显示
  7. 测试时,需要将子窗体的声明在成员变量中,这样可以在多个方法中调用。
  8. 可以结合https://ningqian.blog.csdn.net/article/details/115467900这篇来看我下面的测试代码

测试代码

主窗体Form1

namespace WFATest2
{
    public partial class Form1 : Form
    {
       private  Form2 fm2 ;//声明Form2的fm2
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {


        }
        //创建Form2
        private void newForm_Click(object sender, EventArgs e)
        {
            fm2 =  new Form2(this);//将Form1的对象传给fm2(可选,之前为了避免创建多个Form2,同时关闭Form2后还可以重新创建所设置)
            //fm2.Show();//取消了fm2 的显示
            newForm.Enabled = false; //让Form2的对象只创建一个
            
        }
        //激活Form2
        private void activateForm2_Click(object sender, EventArgs e)
        {
            if(fm2!=null&&fm2.Visible!=false)//fm2非空,非隐
                 fm2.Activate();
            //button1.Enabled = false;
        }
        //显示Form2
        private void showForm2_Click(object sender, EventArgs e)
        {
            if(fm2!=null)//fm2非空
                fm2.Show();
        }
    }
}

子窗体Form2

namespace WFATest2
{
    public partial class Form2 : Form
    {
        private Form1 fm1;
        public Form2()
        {
            InitializeComponent();
        }
        public Form2(Form1 fm1)
        {
            InitializeComponent();
            this.fm1 = fm1;
        }
        private void Form2_FormClosed(object sender,FormClosedEventArgs e)
        {

            fm1.newForm.Enabled = true;

        }
    }
}

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值