窗体和对话框要么是有模式的,要么是无模式的。“模式”窗体或对话框必须关闭或隐藏,然后您才能继续使用应用程序的其余部分。
显示重要消息的对话框应始终是有模式的。模式对话框的一个示例是 Visual Studio 中的“关于”对话框。MessageBox是您可以使用的一个模式窗体。有模式对话框显示出来以后,那么开始打开的窗体或对话框就不能再获得焦点了。
“无模式”窗体让您在此窗体与另一窗体之间变换焦点,而不必关闭初始窗体。用户在该窗体显示的同时可继续在任何应用程序的其他位置工作。例如:文本编辑软件里面的搜索功能,就是一个无模式的,因为搜索对话框出来以后,还可以操作编辑本文,即它不影响其他窗体获得焦点。
将窗体显示为有模式对话框用form1.ShowDialog()方法。这个方法有一个可选参数 owner,该参数可用于指定窗体的父子关系。例如:
在Form1代码段中:
Form2 f2=new Form2();
f2.ShowDialog(this);//this表示Form1当前实例
这样f2实例就和Form1实例建立了一个父子关系,可以相互通讯。
如果没有使用f2.ShowDialog(this)而直接使用的是无参的,要定义父子关系,则需要语句f2.owner=this;
将窗体显示为无模式对话框则用form1.show()方法。
注意 如果窗体显示为有模式,则在关闭该对话框之前,不执行 ShowDialog 方法后面的代码。但是,当窗体显示为无模式时,那么该窗体显示之后,会立刻执行 Show 方法后面的代码。
转自:<maicar1235>
相关推荐
C# 非模态窗体(show)实现模态窗体(ShowDialog)的效果
下面小编就为大家带来一篇浅谈C# 非模式窗体show()和模式窗体showdialog()的区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
private List<Stroke> _strokeList = new List<Stroke>(); private List<Stroke> _endgoing = new List<Stroke>(); private bool _drawing = false; private Point _startDraw = new Point(); private Bitmap _...
/// <param name="SelectText"></param> private void ListviewShow(string SelectText) { ltvSelect.Items.Clear(); foreach (XmlNode Empnode in ListEmp) { if (SelectText != "") { if (Empnode....
C# 非模态窗体(show)实现模态窗体(ShowDialog)的效果 .rar
}">C#关于FTP文件上传的源码 if ftpClient null { OpenFileDialog open new OpenFileDialog ; if open ShowDialog DialogResult OK { try { ftpClient Put open FileName ; ...
/// <param name="Value"></param> private void SetTextBoxValue(string Value) { textBox1.Text = Value; } private void button1_Click(object sender, EventArgs e) { //方法一:用单例模式 Form2....
/// <summary> /// Form1 的摘要说明。 /// </summary> public class Login : System.Windows.Forms.Form { private System.Windows.Forms.Button btClose;//取消按钮 private System.Windows.Forms.Button...
给初学者的简单例题! private System.ComponentModel.IContainer components; ... else if ((p.X > PaddleRect.Left + PaddleRect.Width/4) && (p.X <= PaddleRect.Left + PaddleRect.Width/2)) ...
2004.03.09 完成对<函数类>的查询功能,包括 代码调用,中文注释,所需的DLL库,与C#中函数对应关系 2004.03.10 0:48:52 完成了用StringBuilder数组对原ComboBox的替换,可以使程序不用从新读取数据库就可以刷新...
将彩色图片转换为灰度图片程序(C#源代码编写)if(this.openFileDialog1.ShowDialog()==DialogResult.OK) { bmp=new Bitmap(this.openFileDialog1.FileName); for (int i=0;i<bmp.Width-1;i++) { ...
C# 加密解密 将自己的文件加密 //选择加密、解密文件 private void button1_Click(object sender, EventArgs e) { if (openFileDialog1.ShowDialog() == DialogResult.OK) { textBox1.Text = openFileDialog1....
窗体的show方法,没有给调用代码任何通知,如果需要通知,使用showdialog是一种好的选择。 在调用show方法后,show方法后面的代码会立即执行,
从DialogBase类继承并使用XAML设计器创建对话框,然后如果不需要对话框结果,则可以使用void DialogBase.ShowDialog(ContentControl parent = null)方法显示它,或者可以使用异步/等待模式方法Task<DialogResult> ...
/// <summary> /// Form1 的摘要说明。 /// </summary> public class login : System.Windows.Forms.Form { private System.Windows.Forms.Label label1; private System.Windows.Forms.Label label2; ...
if (abc.ShowDialog() == DialogResult.OK) { this.Text = "已注册版本"; } else { Application.Exit(); } } catch (Exception) { MessageBox.Show("重要dll,丢失!"); Application.Exit(); } }
C#(WINFORM)学习 一、 C#基础 基础 类型和变量 类型和变量 类型 C# 支持两种类型:“值类型”和“引用类型”。值类型包括简单类型(如 char、int 和 float 等)、枚举类型和结构类型。引用类型包括类 (Class)类 ...
由于用到了非托管资源,最简单的方式是把托管资源(WaitForm)放在工作线程,线程结束,窗体会自动销毁,不用自己写清理代码。 ShowDialog自动阻塞当前线程,这使它成为最优的解决方式。
c#编写的简单记事本程序,private void 新建ToolStripMenuItem_Click(object sender, EventArgs e) { if (richTextBox1.Modified == true) { DialogResult dr = MessageBox.Show("要保存正在編輯的文件嗎?", ...