通用对话框学习一:OpenFileDialog

    在进行WinForm程序的开发时,经常会有提示用户输入特定的信息,但是对于常见的任务,例如,打开和保存文件,可以使用预先编写好的对话框类,而不是定制的对话框。

    对话框是一个在另一个窗口中显示的窗口,在继续执行程序流之前,可以让用户在对话框中输入一些数据。通用对话框常常用于从用户处获取一般性的信息,大多数应用程序都需要它,例如输入文件名,它是Windows操作系统的一部分。除了PrintPreviewDialog外,其他的对话框都派生子抽象基类CommonDialog。CommonDialog定义了一些方法和事件,他们对于所有的对话框类来说都是通用的。

   通用方法:

Reset 在派生类中被重写时,将通用对话框的属性重置为默认值。
Public method Supported by the .NET Compact Framework

ShowDialog 

已重载。 运行通用对话框。

     通用的事件:

HelpRequest 当用户单击通用对话框中的“帮助”按钮时发生。

CommonDialog类是一个抽象类,它有一个抽象的方法,abstract bool RunDialog ,因此它的继承类均需要实现这个方法。这次主要学习OpenFileDialog类的使用。

     OpenFileDialog类是一个sealed类,因此只能实例化。MSDN解释“提示用户打开文件。无法继承此类。”使用此类课检查某个文件是否存在并打开该文件。ShowReadOnly属性确定是否在对话框中显示只读复选框,ReadOnlyChecked属性指示是否选中只读复选框。

      它有很多的属性,下面通过一个例子来了解一些属性的使用。

      新建一个WinForm程序,有两个控件,button控件和一个textbox控件,事先在D盘建一个文本文档Test.txt,在里面任意添加内容。界面如下:

      对于button的点击事件,编写如下的代码:

ODF的使用
 private void button1_Click(object sender, System.EventArgs e)
{
OpenFileDialog openFileDialog1
= new OpenFileDialog();

openFileDialog1.InitialDirectory
= "d:\\";
openFileDialog1.Filter
= "txt files (*.txt)|*.txt|All files (*.*)|*.*";

openFileDialog1.FilterIndex
= 1;
openFileDialog1.RestoreDirectory
= true;

if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
textBox1.Clear();
using(StreamReader read = new StreamReader(openFileDialog1.FileName,Encoding.Default))
{
string line;
while ((line=read.ReadLine())!=null)
{
textBox1.AppendText(line);
}
}
}
}

     打开的文件对话框的一些属性时可以进行设置的,比如打开什么路径下的文件,可以对文件夹中的文件进行筛选。

     openFileDialog1.Title="选择文件";Title属性设置打开对话框的名字,默认是“打开”,但是i这个名字并不是最好的。

     openFileDialog1.InitialDirectory = "c:\\";InitialDirectory属性,设置打开的默认目录,默认情况在C盘。这里是D盘。

     openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";Filter属性文件过滤器,是对文件进行筛选。这里的话可以看出是对*.txt和*.*进行选择。过滤器前后不允许有空白,如果写成 txt files (*.txt)|*.txt    |All files (*.*)|*.*,则会出现异常。

      openFileDialog1.FilterIndex = 1;表示默认筛选情况。

      openFileDialog1.FileName,FileName属性用来获得打开文件的文件名。获取或设置一个包含在文件对话框中选定的文件名的字符串。

      下面重点介绍一下,OFD的showDialog()方法。原型如下:

public DialogResult ShowDialog ()

      它显示一个打开文件对话框。返回值是一个枚举类型DialogResult。指定标识符以指示对话框的返回值。对于OFD对话框,如果用户在对话框中单击“确定”,则为DialogResult.OK,否则为DialogResult.Cancel。

      前面说到,ShowReadOnly属性确定是否在对话框中显示只读复选框,ReadOnlyChecked属性指示是否选中只读复选框。加一句 openFileDialog1.ShowReadOnly = true;这是什么效果呢,如下:

     

       总结:使用OFD,首先要创建一个OFD的实例,设置一下这个实例的属性,包括默认的打开路径,文件的筛选,然后再调用ShowDialog()方法,在根据用户的选择来处理相关操作。

       自己对于OFD的一个另类的理解:一个OFD对话框,终极的目标就是为了获得文件的名字,因为有名字就可以进行访问了!

PS:文件过滤器的文本字符串的构成

每一部分用“|”来个开,而每一个部分又可以分成2块,中间依旧用“|”来隔开。每一部分的2个块中,第一个快表示的是在下拉列表中显示的文本,第二个块表示是对文件进行的筛选。例如:

TxT文件|*.txt 则下拉中出现“TxT文件”,而里面是筛选后的"txt"文件。

DialogResult枚举:

它定义了Abort,Cancel,Ignore,No,None,OK,Retry,Yes等。

None是默认值,只要用户没有关闭这个对话框,就设置这个值。根据单击的情况来返回相应的结果,对于OFD只有OK和Cancel。

 FileNames属性之补充:

 前面是打开一个文件的当Multiselect属性设置为true时,可以选中多个文件,则FileNames属性返回的是一个string[]。包含了所选中的文件的名字。

 

         

posted @ 2011-08-25 12:44  langren919  阅读(2517)  评论(3编辑  收藏  举报