扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
第二个语句声明了一个名为src的FileInfo变量,并把它初始化成代表“打开”对话框中所选文件的一个对象(FileInfo是Microsoft .NET Framework提供的一个类,可利用它对文件进行各种处理)。
第三个语句将src变量的Name属性赋给filename控件的Text属性。src变量的Name属性包含了在“打开”对话框中选定的文件名(但无路径信息)。通过此次赋值,文件名会在Windows窗体的filename组件中显示。
8. 将/* add while loop here */注释替换成以下语句:
source.Text = "";
source字段是窗体上最大的文本框。把它的Text属性设置成空字符串(""),就可以清除当前显示的任何文本。
9. 在刚才在openFileDialog_FileOk方法中添加的那一行语句之后,输入以下语句:
TextReader reader = src.OpenText();
该语句声明了一个名为reader的TextReader变量 (TextReader是.NET Framework提供的另一个类,它用于从文件这样的来源中读取字符流。该类位于System.IO命名空间中)。OpenFileDialog类提供了OpenText方法,它用于打开用户在“打开”对话框中选择的文件。OpenText方法返回的是一个TextReader对象。上述语句的作用就是将reader初始化为从src.OpenText方法调用中返回的TextReader对象。现在,可以使用reader变量来读取用户选择的文件中的内容。
10. 在添加到openFileDialog_FileOk方法的上一行语句之后,接着输入以下语句:
string line = reader.ReadLine();
while (line != null)
{
source.Text += line + ''n'';
line = reader.ReadLine();
}
reader.Close();
上述代码声明了一个名为line的string变量,它用于容纳reader从文件中读取的每一行文本。语句调用reader.ReadLine方法从文件中读取第一行文本。该方法要么返回下一行文本,要么返回一个名为null的特殊值(如果没有更多的行可供读取)。这个调用的结果将赋给line变量。
while循环开头的布尔表达式检查line变量的值。如果不为null,循环主体就显示读取的文本行,具体的做法是将该行附加到名为source的TextBox控件的Text属性尾部,并在最后添加一个换行符(''n'')。TextReader对象的ReadLine方法在读取每一行的时候,会自动剥除换行符,所以需要重新添加这个换行符。随后,while循环将读取下一行文本(这是循环的“更新”语句),然后执行下一次重复。
循环结束后,调用extReader对象的Close方法来关闭文件。
提示 熟悉C#语法之后,你会发现while循环中的代码能缩写成下面这样:
string line;
while ((line = reader.ReadLine()) != null) { source.Text += line + ''n''; }
reader.Close();
在这种情况下,循环开头的布尔表达式同时还要执行初始化和更新操作。其中将调用ReadLine方法,并将返回值赋给line变量。然而,赋值语句实际会生成一个值——要赋值的表达式的值。所以,可以使用一个关系操作符来比较一个赋值表达式的结果,并最终生成一个布尔结果。在这个例子中,如果所赋的值为null,赋值表达式的值就是null,与null值比较的结果将为true。
11. 选择“调试”|“¬开始执行(不调试)”。
12. 单击“Open File”按钮,随后会出现“打开”对话框。
13. 切换到My Documents文件夹中的Microsoft PressVisual CSharp Step by Step Chapter 5WhileStatementWhileStatement子文件夹,选择Form1.cs文件,并单击 “打开”。
14. 在文本框中找到openFileDialog_FileOk方法。验证该方法已经包含刚才所添加的代码。
15. 关闭窗体。
返回Visual Studio 2005编程环境。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者