C#中的Dialog对话框
作者:springsnow 发布时间:2022-08-21 11:21:48
一、MessageBox弹出框
MessageBox.Show(<字符串> Text, <字符串> Title, <整型> nType,MessageBoxIcon);
第一个参数是 String 类型,表示提示框里面的 内容;
第二个参数是String 类型,表示提示框的 标题;
第三个参数是整数类型,表示消息框的类型 ,一般的都使用系统提供的几种类型;
第四个参数是提示框的 图标,比如说警告、提示、问题等等。
MessageBoxButtons类型:
AbortRetryIgnore: 消息框包含“中止”、“重试”和“忽略”按钮。
OK :消息框包含“确定”按钮。(默认)
OKCancel : 消息框包含“确定”和“取消”按钮。(上例所示)
RetryCancel :消息框包含“重试”和“取消”按钮。
YesNo :消息框包含“是”和“否”按钮。
YesNoCancel :消息框包含“是”、“否”和“取消”按钮
MessageBoxIcon图标样式:
MessageBoxIcon.Question
MessageBoxIcon.Asterisk
MessageBoxIcon.Information
MessageBoxIcon.Error
MessageBoxIcon.Stop
MessageBoxIcon.Hand
MessageBoxIcon.Exclamation
MessageBoxIcon.Warning
举例
MessageBox.Show("用户名或者密码不能为空");
MessageBox.Show("用户名或者密码不能为空","登录提示");
MessageBox.Show("用户名或者密码不能为空","登录提示",MessageBoxButtons.OKCancel);
MessageBox.Show("用户名或者密码不能为空","登录提示",MessageBoxButtons.OKCancel,MessageBoxIcon.Exclamation);
二、WinForm自带对话框
除PrintPreviewDialog外,所有的对话框都继承于抽象类CommonDialog。
CommonDialog的继承结构
1、文件对话框(FileDialog) 它又常用到两个:
打开文件对话框(OpenFileDialog)
保存文件对话(SaveFileDialog)
2、字体对话框(FontDialog)
3、颜色对话框(ColorDialog)
4、打印预浏对话框(PrintPreviewDialog)
5、页面设置(PrintDialog)
6、打印对话框(PrintDialog)
CommonDialog的方法
OnHelpRequest(EventArgs): 引发 HelpRequest 事件。
Reset():在派生类中被重写时,将通用对话框的属性重置为默认值。
ShowDialog(): 用默认的所有者运行通用对话框。
ShowDialog(IWin32Window) : 运行具有指定所有者的通用对话框。
1、打开文件对话框(OpenFileDialog)
基本属性
InitialDirectory 对话框的初始目录
Filter 要在对话框中显示的文件筛选器,例如,"文本文件(*.txt)|*.txt|所有文件(*.*)||*.*"
FilterIndex 在对话框中选择的文件筛选器的索引,如果选第一项就设为1
RestoreDirectory 控制对话框在关闭之前是否恢复当前目录
FileName 获取或设置一个包含在文件对话框中选定的文件名的字符串。
Title 将显示在对话框标题栏中的字符
AddExtension 是否自动添加默认扩展名
CheckPathExists 在对话框返回之前,检查指定路径是否存在
DefaultExt 默认扩展名
DereferenceLinks 在从对话框返回前是否取消引用快捷方式
ShowHelp 启用"帮助"按钮
ValiDateNames 控制对话框检查文件名中是否不含有无效的字符或序列
示例
System.Windows.Forms.OpenFileDialog dlg = new System.Windows.Forms.OpenFileDialog();
dlg.Title = "打开文件";
dlg.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Templates);
dlg.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
dlg.FilterIndex = 2;
dlg.RestoreDirectory = true;
if (dlg.ShowDialog() == DialogResult.OK)
{
if (dlg.FileName != "") //如果dlg.Multiselect=true;可以是dlg.FileNames
{
MessageBox.Show("你选择了" + dlg.FileName);
}
}
2、保存文件对话框(SaveFileDialog)
属性
Filter 要在对话框中显示的文件筛选器,例如,"文本文件(*.txt)|*.txt|所有文件(*.*)|*.*"
FilterIndex 在对话框中选择的文件筛选器的索引,如果选第一项就设为1
RestoreDirectory 控制对话框在关闭之前是否恢复当前目录
AddExtension 是否自动添加默认扩展名
CheckFileExists 获取或设置一个值,该值指示如果用户指定不存在的文件名,对话框是否显示警告。
CheckPathExists 在对话框返回之前,检查指定路径是否存在
Container 控制在将要创建文件时,是否提示用户。只有在ValidateNames为真值时,才适用。
DefaultExt 缺省扩展名
DereferenceLinks 在从对话框返回前是否取消引用快捷方式
FileName 获取或设置一个包含在文件对话框中选定的文件名的字符串。
InitialDirector 对话框的初始目录
OverwritePrompt 控制在将要在改写现在文件时是否提示用户,只有在ValidateNames为真值时,才适用
ShowHelp 启用"帮助"按钮
Title 将显示在对话框标题栏中的字符
ValidateNames 控制对话框检查文件名中是否不含有无效的字符或序列
示例
System.IO.Stream stream;
System.Windows.Forms.SaveFileDialog saveFileDialog1 = new System.Windows.Forms.SaveFileDialog();
saveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
saveFileDialog1.FilterIndex = 2;
saveFileDialog1.RestoreDirectory = true;
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
if ((stream = saveFileDialog1.OpenFile()) != null)
{
// Code to write the stream goes here.
stream.Close();
}
}
3、打印预览对话框和打印对话框
1、打印预览对话框(PrintPreviewDialog)属性:
AutoScrollMargin 获取或设置自动滚动边距的大小。
AutoScrollMinSize 获取或设置自动滚动的最小尺寸。
DialogResult 获取或设置窗体的对话框结果。
Document 获取或设置要预览的文档。
HelpButton 获取或设置一个值,该值指示是否应在窗体的标题框中显示“帮助”按钮。
2、打印对话框(PrintDialog)属性:
AllowPrintToFile 禁止或使用"打印到文件"复选框
AllowSelection 禁止或使用"选定内容"单选框
AllowSomePages 禁止或使用"页"单选按钮
Document 从中获取打印机设置的PrintDocument
PrintToFile 打印到文件"复选框是否选中
ShowHelp 控制是否显示"帮助"按钮
ShowNetWork 控制是否显示"网络"按钮
3、示例:
private void printPreviewButton_Click(object sender, EventArgs e)
{
StreamReader streamToPrint = new StreamReader("PrintMe.Txt");
try
{
PrintDocument pd = new PrintDocument(streamToPrint); //假定为默认打印机
if (storedPageSettings != null)
{
pd.DefaultPageSettings = storedPageSettings;
}
PrintPreviewDialog dlg = new PrintPreviewDialog();
dlg.Document = pd;
dlg.ShowDialog();
}
finally
{
streamToPrint.Close();
}
}
private void printButton_Click(object sender, EventArgs e)
{
StreamReader streamToPrint = new StreamReader("PrintMe.Txt");
try
{
PrintDocument pd = new PrintDocument(streamToPrint);
PrintDialog dlg = new PrintDialog();
dlg.Document = pd;
DialogResult result = dlg.ShowDialog();
if (result == DialogResult.OK)
pd.Print();
}
finally
{
streamToPrint.Close();
}
}
三、自定义对话框
1 模态窗口: ShowDialog():
打开模态窗口后,只要不关闭该窗口,鼠标焦点或者光标就会一直停留在该窗口上。只有关闭该窗口后,调用窗口才能继续。
模态窗口关闭后,仍可以读取模态窗口中的信息,如窗口的返回状态等,以后还可以使用ShowDialog()使其可见。
2 非模态窗口: Show():
打开非模态窗口后,仍可以操作调用窗口。后面的代码立即执行。
关闭非模态窗口,该窗口将不复存在,会释放窗口的所有资源,所以无法得到该窗口的任何信息。常用Hide()方法(等效于Visible=false)然后调用Show()方法使其可见。
3、对话框窗体:Form2
public Form1(string para)//获取参数
{
InitializeComponent();
this.StartPosition = FormStartPosition.CenterParent;//启动位置,父窗口中央
this.MaximizeBox = false;
this.MinimizeBox = false;
this.ShowIcon = false;//不显示图标
this.ControlBox = false;
this.ShowInTaskbar = false;
this.FormBorderStyle = FormBorderStyle.FixedDialog;//边框样式为固定对话框
this.btnOK.DialogResult = DialogResult.OK;//"Enter"为OK按钮
this.btnCancel.DialogResult = DialogResult.Cancel;//“ESC”为Cancel按钮
this.textBox1.Text = para;
}
public string ReturnText //定义一个公共属性,供调用窗口Form1使用
{
get { return this.textBox1.Text + "b"; }
}
private void Form1_Load(object sender, EventArgs e)
{
if (this.Owner.Name != "Form1")//Owner为调用窗体,即调用改对话框的窗体
MessageBox.Show("非法调用");
}
private void BtnOK_Click(object sender, EventArgs e)
{
if (this.textBox1.Text.Trim().Length == 0)
MessageBox.Show("无输入");
this.textBox1.Focus();
this.DialogResult = DialogResult.None;//阻止隐藏对话框,对话框不消失
}
4、主窗体Form1:
Form f2 = new Form2("a");
if (f2.ShowDialog(this) == DialogResult.OK)//对应Form2中的Owner,this为给对话框窗体传值
this.textBox1.Text = f2.ReturnText;
f2.Close();
f2.Dispose();
来源:https://www.cnblogs.com/springsnow/p/9434005.html
猜你喜欢
- 本文实例讲述了C#实现XML与实体类之间相互转换的方法。分享给大家供大家参考,具体如下:using System;using System.
- 随着C语言的学习慢慢结束,博主也要开始学习一门新语言了,那就是java。所以博主将会开启一个新的关于java的专栏,所以想要慢慢和我一起学习
- java 8的新特性之一就是lambda表达式,parallelStream()都说性能会比较高,现一探究竟。话不多说,上代码: @Test
- 序言:事件:此web项目的功能及其简单,就是有客户端来访问redis序列号服务时发送jison报文,项目已经在测试环境成功运行2周了,具体的
- 一、redis key数量为1千万时。存储value为"0",比较小。如果value较大,则存储内存会增多redis k
- Java中Stop-The-World机制简称STW,是在执行垃圾收集算法时,Java应用程序的其他所有线程都被挂起(除了垃圾收集帮助器之外
- 一,使用注解: 在spring的配置文件applicationContext.xml中,加入注解扫描。配
- 由于之前一直在使用spring-boot开发,但一直苦恼于不知道如何利用debug调试代码.在网上查找了很多文章之后。学习之余决定把spri
- IntInt是Java八种基本数据类型之一,一般大小为4字节32位,取值范围为2-31—231。两个Int类型变量用“==”比较的是值的大小
- 一、准备工作和传统 CRUD 一样,实现对员工信息的增删改查。①搭建环境添加相关依赖web.xmlspringmvc.xml②准备实体类pu
- Android的应用被限制为最多占用16m的内存,至少在T-Mobile G1上是这样的(当然现在已经有几百兆的内存可以用了——译者注)。它
- 一、环境准备准备开发环境创建一个Maven项目pom.xml添加依赖resources下添加spring的配置文件applicationCo
- 1.线程池Executors的简单使用1)创建一个线程的线程池。 Executors.newSingleThreadExecutor();
- 第一种给容器中的组件加上@ConfigurationProperties注解即可测试:@Component@ConfigurationPro
- spring boot 使用POI读取Excel文件Excel文件目录Excel模板文件存了resourse目录下,如下图:<depe
- Android Studio 在引用外部依赖时,发现一直无法引用外部依赖。刚开始以为是墙的问题,尝试修改Gradle配置,未解决问题。最终发
- 1.后台参数校验Spring Validation验证框架对参数的验证机制提供了@Validated(Spring JSR-303规范,是标
- 如下所示:class Program {
- 不用Spring管理事务?让我们先来看一下不用spring管理事务时,各种框架是如何管理事务的使用JDBC来管理事务使用Hibernate来
- 最近开发了比较多的接口,因为没有可参考的案例,所以一开始一直按照我的理解进行开发。开发多了发现自己每个结果都写了相同的代码:try() {}