C#中的对话框

本文详细介绍了六种常用对话框的功能及使用方法,包括文件对话框、字体对话框、颜色对话框、打印预览对话框及打印对话框。每种对话框都提供了属性介绍、事件说明及示例代码。

常用对话框有:
1、文件对话框(FileDialog) 它又常用到两个:
  打开文件对话框(OpenFileDialog)
  保存文件对话(SaveFileDialog)
2、字体对话框(FontDialog)
3、颜色对话框(ColorDialog)
4、打印预浏对话框(PrintPreviewDialog)
5、页面设置(PrintDialog)
6、打印对话框(PrintDialog)

一、打开文件对话框(OpenFileDialog)
1、 OpenFileDialog控件有以下基本属性
InitialDirectory 对话框的初始目录
Filter 要在对话框中显示的文件筛选器,例如,"文本文件(*.txt)|*.txt|所有文件(*.*)||*.*"
FilterIndex 在对话框中选择的文件筛选器的索引,如果选第一项就设为1
RestoreDirectory 控制对话框在关闭之前是否恢复当前目录
FileName 获取或设置一个包含在文件对话框中选定的文件名的字符串。
Title 将显示在对话框标题栏中的字符
AddExtension 是否自动添加默认扩展名
CheckPathExists 在对话框返回之前,检查指定路径是否存在
DefaultExt 默认扩展名
DereferenceLinks 在从对话框返回前是否取消引用快捷方式
ShowHelp 启用"帮助"按钮
ValiDateNames 控制对话框检查文件名中是否不含有无效的字符或序列
2、 OpenFileDialog控件有以下常用事件
FileOk 当用户点击"打开"或"保存"按钮时要处理的事件
HelpRequest 当用户点击"帮助"按钮时要处理的事件
3、 示例
以下示例创建一个 OpenFileDialog,设置几个属性,并用 ShowDialog 来显示对话框。该示例假定窗体上放置了一个 Button,并在其中添加了 System.IO 命名空间。
protected void button1_Click(object sender, System.EventArgs e)
{ OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.InitialDirectory = "c://" ;
openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*" ;
openFileDialog1.FilterIndex = 2 ;
openFileDialog1.RestoreDirectory = true ;
if(openFileDialog1.ShowDialog() == DialogResult.OK)
{
if(openFileDialog1.FileName!= "")
{
MessageBox.Show("你选择了"+openFileDialog1.FileName);
}
}
}

二、保存文件对话框(SaveFileDialog)
1、SaveFileDialog控件的属性
Filter 要在对话框中显示的文件筛选器,例如,"文本文件(*.txt)|*.txt|所有文件(*.*)|*.*"
FilterIndex 在对话框中选择的文件筛选器的索引,如果选第一项就设为1
RestoreDirectory 控制对话框在关闭之前是否恢复当前目录
AddExtension 是否自动添加默认扩展名
CheckFileExists 获取或设置一个值,该值指示如果用户指定不存在的文件名,对话框是否显示警告。
CheckPathExists 在对话框返回之前,检查指定路径是否存在
Container 控制在将要创建文件时,是否提示用户。只有在ValidateNames为真值时,才适用。
DefaultExt 缺省扩展名
DereferenceLinks 在从对话框返回前是否取消引用快捷方式
FileName 获取或设置一个包含在文件对话框中选定的文件名的字符串。
InitialDirector 对话框的初始目录
OverwritePrompt 控制在将要在改写现在文件时是否提示用户,只有在ValidateNames为真值时,才适用
ShowHelp 启用"帮助"按钮
Title 将显示在对话框标题栏中的字符
ValidateNames 控制对话框检查文件名中是否不含有无效的字符或序列
2、SaveFileDialog事件如下:
FileOk 当用户点击"打开"或"保存"按钮时要处理的事件
HelpRequest 当用户点击"帮助"按钮时要处理的事件
3、示例
protected void button1_Click(object sender, System.EventArgs e)
{ Stream myStream ;
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
saveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*" ;
saveFileDialog1.FilterIndex = 2 ;
saveFileDialog1.RestoreDirectory = true ;
if(saveFileDialog1.ShowDialog() == DialogResult.OK)
{
if((myStream = saveFileDialog1.OpenFile()) != null)
{
// Code to write the stream goes here.
myStream.Close();
}
}
}

三、 字体对话框(FontDialog)
1、字体对话框(FontDialog)常用属性
ShowColor 控制是否显示颜色选项
AllowScriptChange 是否显示字体的字符集
Font 在对话框显示的字体
AllowVerticalFonts 是否可选择垂直字体
Color 在对话框中选择的颜色
FontMustExist 当字体不存在时是否显示错误
MaxSize 可选择的最大字号
MinSize 可选择的最小字号
ScriptsOnly 显示排除OEM和Symbol字体
ShowApply 是否显示"应用"按钮
ShowEffects 是否显示下划线、删除线、字体颜色选项
ShowHelp 是否显示"帮助"按钮
2、字体对话框(FontDialog)的事件
Apply 当点击"应用"按钮时要处理的事件 上海上班族
HelpRequest 当点击"帮助"按钮时要处理的事件
3、示例
protected void button1_Click(object sender, System.EventArgs e)
{ fontDialog1.ShowColor = true;
if(fontDialog1.ShowDialog() != DialogResult.Cancel )
{
textBox1.Font = fontDialog1.Font ;
textBox1.ForeColor = fontDialog1.Color;
}
}

四、颜色对话框(ColorDialog)
1、 颜色对话框(ColorDialog)的常见属性
AllowFullOpen 禁止和启用"自定义颜色"按钮
FullOpen 是否最先显示对话框的"自定义颜色"部份
ShowHelp 是否显示"帮助"按钮
Color 在对话框中显示的颜色
AnyColor 显示可选择任何颜色
CustomColors 是否显示自定义颜色
SolidColorOnly 是否只能选择纯色
3、示例
protected void button1_Click(object sender, System.EventArgs e)
{ ColorDialog MyDialog = new ColorDialog();
// Keeps the user from selecting a custom color.
MyDialog.AllowFullOpen = false ;
// Allows the user to get help. (The default is false.)
MyDialog.ShowHelp = true ;
// Sets the initial color select to the current text color,
// so that if the user cancels out, the original color is restored.
MyDialog.Color = textBox1.ForeColor ;
MyDialog.ShowDialog();
textBox1.ForeColor = MyDialog.Color;
}

五、打印预览对话框和打印对话框
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) {
try {
StreamReader streamToPrint = new StreamReader ("PrintMe.Txt");
try {
TextFilePrintDocument pd = new TextFilePrintDocument(streamToPrint); //假定为默认打印机
if (storedPageSettings != null) {
pd.DefaultPageSettings = storedPageSettings ;
}
PrintPreviewDialog dlg = new PrintPreviewDialog() ;
dlg.Document = pd;
dlg.ShowDialog();
} finally {
streamToPrint.Close() ;
}
} catch(Exception ex) {
MessageBox.Show("试图预览要打印的文件时发生错误 - " + ex.Message);
}
}
//在用户按下打印按钮时激发的事件
private void printButton_Click(object sender, EventArgs e)
{ try {
StreamReader streamToPrint = new StreamReader ("PrintMe.Txt"); 需要请联系我
try {
TextFilePrintDocument pd = new TextFilePrintDocument(streamToPrint);
PrintDialog dlg = new PrintDialog() ;
dlg.Document = pd;
DialogResult result = dlg.ShowDialog();
if (result == DialogResult.OK)
pd.Print();

}
finally {
streamToPrint.Close() ;
}
} catch(Exception ex) {
MessageBox.Show("打印文件时发生错误 - " + ex.Message);
}
}

打开各种对话框示例:
打开文档
OpenFileDialog  openFileDialog=new OpenFileDialog();
openFileDialog.InitialDirectory=”D://”;
openFileDialog.Filter=”文本文件|*.*|c#文件|*.cs|所有文件|*.*”;
openFileDialog.RestoreDirectory=true;
openFileDialog.FilterIndex=1;
if(openFileDialog.ShowDialog()==DialogResult.OK)
{
  string fname=openFileDialog.FileName;
  StreamReader sr=File.OpenText(fname);
  string str;
  while((str=sr.ReadLine())!=null)
{
    this.richTextBox1.Text+=str ;
}
}

保存文档
SaveFileDialog saveFileDialog=new SaveFileDialog();
saveFileDialog.Filter=” 文本文件|*.*|c#文件|*.cs|所有文件|*.*”;
saveFileDialog.FilterIndex=2;
saveFileDialog.RestoreDirectory=true;
if(saveFileDialog.ShowDialog()==DialogResult.OK)
{
  string fName=saveFileDialog.FileName;
  StreamWriter sw=File.AppendText(fName);
  sw.Write(this.richTextBox1.Text);
  sw.Write(“dsfadf”);
  sw.Flush();
  sw.Close();
}

字体对话框
FontDialog fontDialog=new FontDialog();
fontDialog.Color=richTextBox1.ForeColor;
fontDialog.AllowScriptChange=true;
fontDialog.ShowColor=true;
if(fontDialog.ShowDialog()!=DialogResult.Cancel)
{
  richTextBox1.SelectionFont=fontDialog.Font;//将当前选定的文字改变字体
}

颜色对话框
ColorDialog colorDialog=new ColorDialog();
colorDialog.AllowFullOpen=true;
colorDialog.FullOpen=true;
colorDialog.ShowHelp=true;
colorDialog.Color=Color.Balck;
colorDialog.ShowDialog();
richTextBox1.SelectionColor=colorDialog.Color;

打印预览对话框
lineReader=new StringReader(richTextBox1.Text);
try
{
  PrintPreviewDialog printPreviewDialog1=new PrintPreviewDialog();
  printPreviewDialog1.Document=printDocument;
  printPreviewDialog1.FormBorderStyle=FormBorderStyle.Fixed3D;
  printPreviewDialog1.ShowDialog(this);
}
catch(Exception  excep)
{
 MessageBox.Show(excep.Message,”打印出错”,MessageBoxButton.OK,MessageBoxIcon.Error);
return;
}

打印对话框
PrintDialog printDialog=new PrintDialog();
printDialog.Document=printDocument;
if(printDialog.ShowDialog()!=DialogReult.Cancel)
{
  try
  {
    printDocument.Print();
}
catch(Exception ex)
{
  MessageBox.Show(ex.Message);
}
}

 

 

 

转自网易博客。。http://icelam.blog.163.com/blog/static/305101082007513105237897/ 枫林雅阁

### C# 中 DialogHost 的全局通用性及继承性分析 在 C# 中,`DialogHost` 是 WPF 框架中的一个工具或服务,用于管理对话框的显示和交互。它并非严格意义上的,而是一个静态资源或逻辑组件。以下是对 `DialogHost` 的全局通用性和继承性的详细分析: #### 1. **DialogHost 的全局通用性** `DialogHost` 在设计上具有一定的全局通用性,因为它可以通过静态方法直接调用[^1]。例如,`DialogHost.Show` 方法允许开发者以非侵入式的方式显示对话框,而无需显式创建窗口实例。 ```csharp // 使用 DialogHost 显示对话框 var dialogContent = new MyDialogContent(); DialogHost.Show(dialogContent, "RootDialog"); ``` 上述代码展示了如何通过 `DialogHost.Show` 方法全局显示对话框。这种方法的优点在于: - **解耦**:对话框内容与宿主窗口分离,便于维护和复用。 - **灵活性**:可以在任意位置调用 `DialogHost.Show`,而无需关心宿主窗口的具体实现[^2]。 然而,需要注意的是,`DialogHost` 的全局通用性依赖于正确的命名空间导入和资源定义。如果未正确配置 `DialogHost` 的资源(如指定 `RootDialog`),可能会导致运行时错误。 #### 2. **DialogHost 的继承性** 严格来说,`DialogHost` 并不是一个可以被继承的,而是一个静态工具集合。因此,无法直接通过继承扩展其功能[^3]。但可以通过以下方式实现似的效果: - **封装扩展方法**:为 `DialogHost` 创建扩展方法,以添加自定义行为。 ```csharp public static class DialogHostExtensions { public static void ShowCustom(this DialogHost host, object content, string name) { // 自定义逻辑 Console.WriteLine("Showing custom dialog..."); DialogHost.Show(content, name); } } ``` 上述代码展示了如何通过扩展方法为 `DialogHost` 添加新功能。这种方式既保持了原有 API 的完整性,又实现了功能扩展[^4]。 - **继承相关**:虽然不能直接继承 `DialogHost`,但可以通过继承 `Window` 或其他相关来创建自定义对话框主机。 ```csharp public class CustomDialogHost : Window { public CustomDialogHost() { Title = "Custom Dialog Host"; Width = 400; Height = 300; } public void ShowCustomDialog(object content) { var dialog = new ContentControl { Content = content }; this.Content = dialog; this.ShowDialog(); } } ``` 上述代码展示了一个自定义对话框主机的实现。通过继承 `Window` ,可以轻松扩展对话框的功能,并保持与 `DialogHost` 的兼容性[^5]。 #### 3. **总结** - `DialogHost` 具有良好的全局通用性,适合在大型项目中统一管理对话框。 - 虽然 `DialogHost` 本身不可被继承,但可以通过扩展方法或继承相关实现功能扩展。 - 在实际开发中,建议根据具体需求选择合适的扩展方式,以确保代码的可维护性和可扩展性[^6]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值