好了,一切准备工作完成,调用代码如下,
OptionForm form = new OptionForm();
//注册事件
form.OptionSettingChanged += new EventHandler
form.ShowDialog();
通过以下事件处理程序来验证其正确性,
private void form_OptionSettingChanged(object sender, OptionSettingEventArgs e)
{
string newPath = e.ChangedPath;
MessageBox.Show(this, String.Format("新路径为“{0}”。", newPath), "提示");
}
在实际开发过程中,合理的处理方式可能是以上几种方式的组合。对于窗体间的参数传递,我在另一篇文章中也有比较多的基础实例讲解。
.Net Framework提供的模式窗体
.net Framework为我们提供了一些比较常用的对话框,在开发过程中省了不少事,以下对其进行介绍。
MessageBox。显示可包含文本、按钮和符号(通知并指示用户)的消息框。通过MessageBox.Show 静态方法来打开模式对话框。
public static DialogResult Show ( string text );
该方法包含多个重载版本。复杂的一个方法如下,
public static DialogResult Show ( IWin32Window owner, string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton, MessageBoxOptions options, string helpFilePath, HelpNavigator navigator, Object param ) ;
根据不同的参数可以定制对话框的行为。
另外一些对话框提供了特定功能。
OpenFileDialog。打开文件对话框,从FileDialog类继承,提示用户打开文件,无法继承此类。对于文件的打开操作属于比较常见的。
SaveFileDialog。保存文件对话框,从FileDialog类继承,提示用户选择文件的保存位置。无法继承此类。
FolderBrowserDialog。目录浏览对话框,从CommonDialog类继承,提示用户选择文件夹。无法继承此类。 FontDialog。字体设置对话框,从CommonDialog类继承,提示用户从本地计算机上安装的字体中选择一种字体。可继承该类。
ColorDialog。颜色设置对话框,从CommonDialog类继承,表示一个通用对话框,该对话框显示可用的颜色以及允许用户定义自定义颜色的控件。可继承该类。
PageSetupDialog。打印页面设置对话框,从CommonDialog类继承,允许用户更改与页面相关的打印设置,包括边距和纸张方向。无法继承此类。
PrintDialog。打印对话框,从CommonDialog类继承,允许用户选择一台打印机并选择文档中要打印的部分。无法继承此类。
PrintPreviewDialog。打印预览对话框,从Form类继承,表示包含 PrintPreviewControl 的对话框窗体。可继承该类。由于该类从Form类继承,所以除了通过
PrintPreviewDialog.ShowDialog ();
PrintPreviewDialog.ShowDialog (IWin32Window);
方法以模式方式打开窗体外,还可以通过PrintPreviewDialog.Show ();或其重载PrintPreviewDialog.Show (IWin32Window);方法按正常非模式方式打开。
上面列举的文件对话框抽象基类FileDialog是从CommonDialog抽象类继承,因此所有从该类继承的对话框都可以通过CommonDialog.ShowDialog ();或其重载CommonDialog.ShowDialog (IWin32Window);方法以模式方式打开窗体。
更多资源
对于windowsforms的开发,这里推介几本大师写的书,
Charles Petzold著的《Programming Windows with C# (Core Reference)》,中文翻译版为《Microsoft c#Windows程序设计(上下册)》。
Chris Sells著的《Windows Forms Programming in C#》,中文翻译版为《Windows Forms程序设计》。在amazon.com上看到该书好像已经出第二版了。

