zoukankan      html  css  js  c++  java
  • 模态窗口

    C# 非模式窗体show()和模式窗体showdialog()的区别
    对话框不是模式就是无模式的。模式对话框,在可以继续操作应用程序的其他部分之前,必须被关闭(隐藏或卸载)。例如,如果一个对话框,在可以切换到其它窗 体或对话框之前要求先单击“确定”或“取消”,则它就是模式的。

    一、调用

    任何窗体(派生于基类Form的类),都可以以两种方式进行显示。

    //非模式窗体
    From qform=new Form();
    qform.Show();

    //模式窗体
    Form qform=new Form();
    qform.ShowDialog();

    一、控制权上的区别

    Form.Show创建新窗体后(非模式),立即返回,且没有在当前活动窗体和新窗体间建立任何关系,即在保持新窗口的情况下关闭(或最小化)现有 窗体或在保留现有窗体情况下关闭(或最小化)新窗口,都是可以的。

    Form.ShowDialog创建模式窗体,即只有当建立的新窗口关闭之后,原有窗体才能重新获得控制权。即如果不关闭新窗口,将无法对原活动窗 口进行任何操作。对新窗口进行的最小化、还原将会和原窗口一起进行,但是新窗口的关闭对原窗口没有影响。

    需要注意的是,不管是何种情况,只要主窗体被关闭了,或主程序结束了,那么Application.Run将会关闭所有窗体,不管它是模式还是非模 式。


    在rdlc中,使用showdialog显示打印界面,需要手动卸载程序集,否则抛出异常:vs2010 rdlc .net4.0 卸载 Appdomain 时出错。 (异常来自 HRESULT:0x80131015) 

    如果使用showdialog展示rdlc则其线程与主程序属于不同线程;使用show战士rdlc则二者属于同一线程,就不会抛出异常。
    卸载程序集方法this.reportViewer1.LocalReport.ReleaseSandboxAppDomain();
    详参http://blog.csdn.net/pengzhiq/article/details/5876063
     
  • 相关阅读:
    c# 操作数据库
    dataview findrows
    C++:gethostname,gethostbyname获取IP地址和计算机名
    MQTT
    STM32操作外部SRAM
    JAVA中最常用的快捷键总结
    Zstack中End Device设备失去父节点时的重新入网处理方法(转)
    VC++ 重叠窗口
    (转载)PLC内部电路常见的几种形式
    VS2005 DoModal函数
  • 原文地址:https://www.cnblogs.com/maomiyouai/p/3487160.html
Copyright © 2011-2022 走看看