• C#窗体弹出方式总结


    一、前言

    我们在编写C#窗体form时,尝尝需要使用弹出窗口的方法,去到二级页面去完成一些操作。在C#中提供了form.Show()form.ShowDialog()两种方式来实现,而他们之间使用有什么区别呢?下面需要我们去了解一下二者的区别。

    二、弹出窗口方式

    2.1 form.Show弹出窗口

    此方法弹出的窗体与父窗体(一级窗体)是属于同一等级的窗体,也就是他们之间可以相互存在、随意切换修改展示;

    关闭窗口方法this.Close()或者form.Hide();

    优点: 不会影响主页面的运行,相互独立可以切换查看数据;

    缺点: 如果滥用的话会弹出多个窗口,影响性能;

    适用场景: 二级列表的数据展示、详细页面展示…

    2.2 form.ShowDialog弹出窗口

    此方法弹出的窗口会阻断父窗体(一级窗体)的运行,会置顶到最顶层,其他窗体都不能使用。只有在当前窗口关闭后才能继续执行其他逻辑。

    关闭窗口方法this.Close()或者form.Hide();

    优点: 可以专一的处理当前窗口逻辑,满足单一职责;

    缺点: 阻断了其他窗口运行;

    适用场景: 查询表单窗口、修改数据详情窗口…

    三、代码示例

    3.1 基本使用

    // 假设有一个SonForm的弹出窗口
    // 主界面MainForm
    private void MainForm_Load(object sender, EventArgs e)
    {
       SonForm sonForm = new SonForm();
       sonForm.show();
       //sonForm.ShowDialog();
    }
    // SonForm弹出窗口
    private void MainForm_Close()
    {
       // 关闭当前窗口
       this.Close();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    3.2 关闭页面后获取弹框页面的数据

    // 假设有一个SonForm的弹出窗口
    // 主界面MainForm
    private String currentSql = "";
    private void MainForm_Load(object sender, EventArgs e)
    {
       SonForm sonForm = new SonForm();
       //sonForm.show();
       if (sonForm.ShowDialog().Equals(DialogResult.OK))
       {
         // 调用SonForm弹出窗口暴露出来的方法
         currentSql = sonForm.GetDataInfo();
       }
    }
    
    // SonForm弹出窗口
    private String currentSql = "";
    // 确认逻辑后关闭当前窗口
    private void MainForm_Confirm()
    {
       // 设置DialogResult为OK,返回主界面时可以根据这个判断
       this.DialogResult = System.Windows.Forms.DialogResult.OK;
        // 关闭当前窗口
       this.Close();
    }
    // 暴露出来的方法,获取数据
    public string GetDataInfo()
    {
        return currentSql;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    3.3 弹出提示窗口

    if (MessageBox.Show("确认删除?", "提示", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.No)
    {
    	return;
    }
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    【教3妹学算法-每日1题】生成每种字符都是奇数个的字符串
    P1993 小 K 的农场
    用OCC+VS+Qt创建并显示一个几何
    华为云弹性云服务器有哪些优势?
    python读写各种文件
    基于MS16F3211芯片的触摸控制灯的状态变化和亮度控制(11.16)
    1.1 数据库系统概述
    【汇编】[BX]和loop指令(学习笔记)
    Anacoda的用途
    面试题:“中国浙江杭州”这样的一串字符串有多少个不重复的排序组合?
  • 原文地址:https://blog.csdn.net/IO14122/article/details/132716597