Form.Show()与Form.ShowDialog()的区别

一 基本概念

首先,窗体和对话框的显示有两种方式:有模式&无模式。

有模式:显示重要消息的对话框应始终是有模式的,“模式”窗体或对话框必须关闭或隐藏,然后您才能继续使用应用程序的其余部分,例如 MessageBox
就是一个可供使用的有模式的窗体。

无模式:“无模式”窗体让您在此窗体与另一窗体之间变换焦点,而不必关闭初始窗体。用户在该窗体显示的同时可继续在任何应用程序的其他位置工作。

二 实现

1.将窗体显示为有模式对话框:

Form.ShowDialog()方法,返回值是枚举类型的System.Windows.Forms.DialogResult。

Close button (the button with an X at the upper-right corner of the form) causes the form to be hidden and the DialogResult property to be set to DialogResult.Cancel.‘
data-guid="7ec0929e974b892962b7c757051f7e67">当窗体显示为模式对话框时,单击“关闭”按钮(窗体右上角带 X 的按钮)会隐藏窗体并将 DialogResult 属性设置为 DialogResult.Cancel。

Close method is not called by the .NET Framework when the user clicks the close form button of a dialog box or sets the value of the DialogResult property.‘
data-guid="b5bc7fb4411256e8d8459b1dc64eeb97">与非模式窗体不同,当用户单击对话框的关闭窗体按钮或设置 DialogResult 属性的值时,.NET Framework
不调用 Close 方法。 窗体转而可以隐藏并可重新显示,而不用创建该对话框的新实例。 Dispose method of the form when the form is no longer needed by your application.‘
data-guid="093914f23a5520e4d56db249a90549dc">因为隐藏而非关闭显示为对话框的窗体,所以在您的应用程序不再需要该窗体时,必须调用该窗体的 Dispose 方法。

重载方法是  Form.ShowDialog (IWin32Window),将窗体显示为具有指定所有者的模式对话框:

参数owner 类型:System.Windows.Forms.IWin32Window 任何实现
IWin32Window(表示将拥有模式对话框的顶级窗口)的对象。

2.显示非模式窗体:

Form.Show()方法,无返回值类型。

重载方法是 Form.Show (IWin32Window),调用该方法等同于设置非模式的 Owner 属性,然后调用 Show() 方法。

显示窗体等效于将 Visible 属性设置为 true。 在调用 Show
方法之后,只要不调用 Hide 方法,Visible 属性就返回 true 值。

当窗体显示为无模式对话框时,单击“关闭”按钮(窗体右上角带 X
的按钮)后 .NET Framework 会调用 Close 方法,进而执行Dispose
方法。

时间: 2024-07-29 22:54:11

Form.Show()与Form.ShowDialog()的区别的相关文章

$(#form :input)与$(#form input)的区别

相信大家都很奇怪这两者的区别 我从两个方面简单介绍下 1. $("form :input") 返回form中的所有表单对象,包括textarea.select.button等    $("form input")返回form中的所有input标签对象 2. form input 是属于层级选择器(将每一个选择器匹配到的元素合并后一起返回)   form :input是属于表单选择器(匹配所有input,textarea,select,button等)

转: Oracle Form 中commit 与do_key('commit_form')区别

1.commit_form针对form上面的数据变动进行commit,对于代码中的类似update,insert语句也进行提交:如果form上面的数据变动和代码中的数据变动有冲突,最后以界面上的为准.2.do_key('commit_form')会首先寻找form下的triggers中的KEY-COMMIT这个trigger,并执行KEY-COMMIT中所写的代码.如果没有KEY-COMMIT这个trigger,则会针对form和代码一起提交.如果form上面的数据变动和代码中的数据变动有冲突,

show()与showDialog()的区别

A.WinForm中窗体显示  显示窗体可以有以下2种方法:  Form.ShowDialog方法 (窗体显示为模式窗体) Form.Show方法 (窗体显示为无模式窗体) 2者具体区别如下: 1.在调用Form.Show方法后,Show方法后面的代码会立即执行 2.在调用Form.ShowDialog方法后,直到关闭对话框后,才执行此方法后面的代码 3.当窗体显示为模式窗体时,单击“关闭”按钮会隐藏窗体,并将DialogResult属性设置为DialogResult.Cancel 与无模式窗体

C# 非模式窗体show()和模式窗体showdialog()的区别(转)

对话框不是模式就是无模式的.模式对话框,在可以继续操作应用程序的其他部分之前,必须被关闭(隐藏或卸载).例如,如果一个对话框,在可以切换到其它窗 体或对话框之前要求先单击“确定”或“取消”,则它就是模式的. 一.如何调用 任何窗体(派生于基类Form的类),都可以以两种方式进行显示. //非模式窗体 From qform=new Form(); qform.Show(); //模式窗体 Form qform=new Form(); qform.ShowDialog(); 一.控制权上的区别 Fo

delphi form.hide和form.visiable 失效?

后来我发现form.hide和form.visiable 全部失效了,然后用 ShowWindow(Application.Handle, SW_HIDE);   ShowWindow(Application.MainFormHandle, SW_HIDE);

关于$("form").serializeObject()与$("form").serialize()

form.serialize():jQuery的serialize()方法通过序列化表单值,可以把序列化的值传给ajax()作为url的参数,轻松使用ajax()提交form表单了,而不需要一个一个获取表单中的值然后传给ajax() form.serializeObject():讲form表单转成javasrcipt object对象,将form里面的内容转化成json格式 例:{ "a":1, "b":2, "c":3 } 拓展:(1)将表单序

使用Form Builder创建Form具体步骤

使用Oracle Form Builder创建Form具体步骤 (Data Source为Table) 说明:当Block使用的Data Source为Table时,Form会自动Insert,Update,Delete,Lock.若要显示non-database Item,需在POST-QUERY Trigger 里手动写代码来为non-database Item取值. 步驟一:分析需求设计Table架构 1). Table需指定一Unique ID,可为其创建Unique Index,在Fo

http://www.vaikan.com/docs/jquery.form.plugin/jquery.form.plugin.html#getting-started

Jquery.Form 异步提交表单实例 http://www.aqee.net/docs/jquery.form.plugin/jquery.form.plugin.html#getting-started 1. 在你的页面里写一个表单.一个普通的表单,不需要任何特殊的标记: <form id="myForm" method="post" action="/Home/AjaxForm"><div>Name:<inp

HTTP请求中的Form Data与Request Payload的区别

前端开发中经常会用到AJAX发送异步请求,对于POST类型的请求会附带请求数据.而常用的两种传参方式为:Form Data 和 Request Payload. GET请求 使用get请求时,参数会以key=value的形式拼接在请求的url后面.例如: http://m.baidu.com/address/getlist.html?limit=50&offset=0&t=1502345139870 但是受限于请求URL的长度限制,一般参数较少时会使用get请求. POST请求 当参数数量