1、第第4章章仿仿Windows记事本记事本2 2记事本功能分析记事本功能分析文件的读写文件的读写StreamReader/StreamWriter通用对话框设计通用对话框设计文件的编辑(复制、粘贴、剪贴)文件的编辑(复制、粘贴、剪贴)文本的查找与替换文本的查找与替换3 3计算器外观设计计算器外观设计界面设计界面设计MenuStrip控件控件LayoutStyle:Flow;可随容器的大小发生;可随容器的大小发生改变改变菜单项菜单项ShortcutKeys:设置快捷键设置快捷键ShortcutKeyDisplayStringEnabled:设置菜单项是否可用设置菜单项是否可用Name:设置菜单项的
2、名字:设置菜单项的名字Text:菜单项上显示的文本:菜单项上显示的文本界面设计界面设计RichTextBox控件控件Dock:Fill;随容器的大小而改变自身大小;随容器的大小而改变自身大小Modified:设置或判断控件中的内容是否被修设置或判断控件中的内容是否被修改改Selected:获取或设置选定文本获取或设置选定文本Font:获取或设置字体获取或设置字体6 6菜单项菜单项文件的读、写操作文件的读、写操作文件和流文件和流System.IO命名空间提供了操作文件与目录命名空间提供了操作文件与目录的类的类文件的读取需要用流文件的读取需要用流(stream)来进行操作来进行操作流就是流就是C#
3、中读写文件的通道中读写文件的通道程序通过输入流从数据源读取数据,通过输出程序通过输入流从数据源读取数据,通过输出流向目的地写数据。流向目的地写数据。数据源(文件、键盘、内存)C#程序数据目的(文件、控制台、内存)输入流输出流System.IO.StreamWriterSystem.IO.StreamWriter 写文件写文件StreamWriter sw=new StreamWriter(“c:testfile.txt”,true,System.Text.Encoding.Default);/第一个参数为文件名,第二个参数判断是否覆盖已有/文件,第三个参数为编码方式sw.WriteLine(测
4、试数据1);sw.WriteLine(测试数据2);sw.Write(测试数据3测试数据3测试数据3+测试数据3测试数据3测试数据3测试数据3+测试数据3测试数据3测试数据3测试数据3);sw.Close();System.IO.StreamReader System.IO.StreamReader 读文件读文件StreamReader sr=new StreamReader(“c:testfile.txt”,System.Text.Encoding.Default);MessageBox.Show(sr.ReadLine();MessageBox.Show(sr.ReadToEnd();sr
5、.Close();通用对话框设计通用对话框设计通用对话框概述通用对话框概述在在.NET框架中,提供了以下对话框类:框架中,提供了以下对话框类:打开文件对话框(打开文件对话框(OpenFileDialog)保存文件对话框(保存文件对话框(SaveFileDialog)字体对话框(字体对话框(FontDialog)颜色对话框(颜色对话框(ColorDialog)页面设置对话框(页面设置对话框(PageSetupDialog)打印对话框(打印对话框(PrintDialog)等类。)等类。通用对话框的使用方法通用对话框的使用方法首先声明一个通用对话框,设置一些必要属性首先声明一个通用对话框,设置一些必
6、要属性调用调用ShowDialog()方法打开对话框方法打开对话框接收用户与对话框交互操作的返回值,返回值接收用户与对话框交互操作的返回值,返回值是是DialogResult实例实例OpenFileDialog dlg=new OpenFileDialog();dlg.Filter=文本文件(*.txt)|*.txt|所有文件(*.*)|*.*;dlg.Title=打开文件;if(dlg.ShowDialog()=DialogResult.OK)/显示打开文件对话框 string _fileName=dlg.FileName;OpenFileDialog控件控件常用属性常用属性说明说明File
7、Name获取或设置用户在打开文件对话框中选择的文件名获取或设置用户在打开文件对话框中选择的文件名Filter设置文件筛选过滤器,用于指定对话框中文件类型设置文件筛选过滤器,用于指定对话框中文件类型Multiselect设置是否允许选择多个文件设置是否允许选择多个文件FileNames只读属性,获取用户选择的多个文件名只读属性,获取用户选择的多个文件名OpenFileDialogOpenFileDialog控件本身并不能打开文件,如控件本身并不能打开文件,如要显示文件可以通过创建要显示文件可以通过创建StreamReaderStreamReader对象来对象来读取文件内容。读取文件内容。Open
8、FileDialog odlg=new OpenFileDialog();odlg.Filter=文本文件(*.txt)|*.txt|所有文件(*.*)|*.*;odlg.Title=打开文件;if(odlg.ShowDialog()=DialogResult.OK)/显示打开文件对话框 StreamReader sr=new StreamReader(odlg.FileName,Encoding.Default);rtxtContent.Text=sr.ReadToEnd();sr.Close();SaveFileDialog控件控件常用属性常用属性说明说明FileName获取或设置用户在保
9、存文件对话框中选择的文件获取或设置用户在保存文件对话框中选择的文件名名Filter设置文件筛选过滤器,用于指定对话框中文件类设置文件筛选过滤器,用于指定对话框中文件类型型AddExtension设置在省略扩展名时,是否自动将扩展名添加到设置在省略扩展名时,是否自动将扩展名添加到文件名上文件名上DefaultExt默认的文件扩展名默认的文件扩展名SaveFileDialogSaveFileDialog控件本身并不能保存文件,如控件本身并不能保存文件,如要写文件可以通过创建要写文件可以通过创建StreamWriterStreamWriter对象来实对象来实现。现。SaveFileDialog sd
10、lg=new SaveFileDialog();sdlg.Filter=文本文件(*.txt)|*.txt|所有文件(*.*)|*.*;sdlg.Title=“保存文件;Sdlg.AddExtension=true;Sdlg.DefaultExt=“.txt”;if(sdlg.ShowDialog()=DialogResult.OK)/显示保存文件对话框 StreamWriter sw=new StreamWriter(sdlg.FileName,true,Encoding.Default);sw.Write(rtxtContent.Text);sw.Close();FontDialog控件控
11、件用于设置文本字体,可以改变字体、字号、字形、用于设置文本字体,可以改变字体、字号、字形、颜色等。颜色等。常用属性常用属性说明说明Font获取或设置选定的字体获取或设置选定的字体ShowColor是否显示颜色选项,默认为不显示是否显示颜色选项,默认为不显示ShowEffects是否包含特殊效果选项,如删除线,下是否包含特殊效果选项,如删除线,下划线等,默认为显示划线等,默认为显示 private void mnuFont_Click(object sender,EventArgs e)/修改字体 FontDialog fontDialog1=new FontDialog();fontDialo
12、g1.ShowColor=true;if(fontDialog1.ShowDialog()=DialogResult.OK)rtxtContent.Font=fontDialog1.Font;记事本功能实现记事本功能实现1.实现:另存为实现:另存为分析:分析:一、文件菜单一、文件菜单“另存为另存为”的单击事件:的单击事件:1.设置saveFileDialog1的属性;2.创建StreamWriter对象,取名为sw1,使用sw1将rtxtContent中的内容写入到指定的文件中;3.设置rtxtContent.Modified=false;4.设置_filename字段;5.关闭sw1对象在记
13、事本窗体中设置字段或声明对象:在记事本窗体中设置字段或声明对象:添加一个变量_filename,用来保存文件名;声明一个SaveFileDialog类控件,取名为saveFileDialog12.实现:保存实现:保存分析:(以下内容均在分析:(以下内容均在“保存保存”菜单项的单击事件中实现)菜单项的单击事件中实现)一、文件菜单一、文件菜单创建StreamWriter对象,将修改过的内容保存到现有文件中 判断:文件是否存在(已保存过)判断:文件是否存在(已保存过)调用“另存为”的功能代码 是否3.实现:新建实现:新建分析(以下内容均在分析(以下内容均在“新建新建”菜单项的单击事件中实现)菜单项的
14、单击事件中实现)一、文件菜单一、文件菜单判断:判断:rtxtContent中是否有修改后未作的内容,条件为真:中是否有修改后未作的内容,条件为真:弹击消息框,提示是否需要保存Yes:调用“保存”功能No:不作任何操作Cancel:设置 _isContinue=false添加一个标志:bool _isContinuetrue;判断:判断:_isContinue,条件为真:,条件为真:将rtxtContent清空;设置 form1.Text=新建文本文档_记事本;设置 _filename=“”;4.实现:打开实现:打开分析(以下内容均在分析(以下内容均在“打开打开”菜单项的单击事件中实现)菜单项的
15、单击事件中实现)一、文件菜单一、文件菜单判断:判断:rtxtContent中是否有修改后未作的内容,条件为真:中是否有修改后未作的内容,条件为真:弹击消息框,提示是否需要保存Yes:调用“保存”功能No:不作任何操作Cancel:设置 _isContinue=false添加一个标志:bool _isContinuetrue;判断:判断:_isContinue,条件为真:,条件为真:声明一个OpenFileDialog控件创建一个StreamReader类对象将指定的文件显示出来二、编辑菜单二、编辑菜单1.实现:实现:剪切,复制,粘贴,删除,撤销,全选剪切,复制,粘贴,删除,撤销,全选分析:分析
16、:RichTextBox的常用属性和方法的常用属性和方法常用属性常用属性说明说明Select()选择文本选择文本SelectAll()选择所有内容选择所有内容Cut()将选择的内容剪切至剪贴板将选择的内容剪切至剪贴板Copy()将选择的内容复制至剪贴板将选择的内容复制至剪贴板Paste()将剪贴板中的内容粘贴至光标处将剪贴板中的内容粘贴至光标处Undo()撤销撤销ClearUndo()消除最近的撤销信息消除最近的撤销信息SelectionLength选择内容的长度选择内容的长度SelectedText选择的文本选择的文本当当“编辑编辑”菜单的菜单的Click事件和事件和DropDownOpen
17、ed事件发生时,判断事件发生时,判断“编辑编辑”菜单下的各二级菜单项是菜单下的各二级菜单项是否可用。否可用。rtxtContent.Modified撤销rtxtContent.SelectedTextrtxtContent.Text剪切、复制、删除Clipboard.GetText().ToString()查找、替换粘贴二、编辑菜单二、编辑菜单三、查找与替换三、查找与替换创建用户自定义对话框创建用户自定义对话框对话框与窗口的不同主要体现在对话框不能调整大对话框与窗口的不同主要体现在对话框不能调整大小。因此将窗体设置成对话框,需设置窗体的几个小。因此将窗体设置成对话框,需设置窗体的几个属性。属性
18、。常用属性常用属性说明说明FormBorderStyle提示窗体的边框和标题栏的外观和行为提示窗体的边框和标题栏的外观和行为MaximizeBox确定窗体标题栏是否有最大化框确定窗体标题栏是否有最大化框MinimizeBox确定窗体标题栏是否有最小化框确定窗体标题栏是否有最小化框StartPosition确定窗体第一次出现时的位置确定窗体第一次出现时的位置AcceptButton设置窗体的设置窗体的“接受接受”按钮,用户按按钮,用户按“Enter“键,都相当于单击该按钮键,都相当于单击该按钮1.实现:查找实现:查找三、查找与替换三、查找与替换关键技术:1.富文本框的Find()方法l rtxt
19、Content.Find(searchString);l rtxtContent.Find(searchString,searchPosition,RichTextBoxFinds.MatchCase);2.富文本框的Select()方法l rtxtContent.Select(startPosition,selectLength);/添加两个成员字段 int _findPosition=0;string _findString=“”;private void mnuFind_Click(object sender,EventArgs e)frmFind frmFind1=new frmFin
20、d();if(frmFind1.ShowDialog()=DialogResult.OK)_findString=frmFind1.strFind;Find();/调用Find()方法进行查找 public void Find()/查找方法 _findPosition=rtxtContent.Find(_findString,_findPosition,RichTextBoxFinds.MatchCase );if(_findPosition=-1)/表示未找到 MessageBox.Show(找不到+_findString,记事本,MessageBoxButtons.OK,MessageBo
21、xIcon.Information);_findPosition=0;else rtxtContent.Select(_findPosition,_findString.Length);_findPosition+=_findString.Length;2.实现:替换实现:替换三、查找与替换三、查找与替换关键技术:用到字符串的Replace()方法,对选定的内容进行查找替换。string1.Replace(searchString,replaceString)32总结总结WinForms可用于可用于 Windows 窗体应用程序窗体应用程序开发开发Windows 窗体控件是从窗体控件是从 System.Windows.Forms.Control 类派类派生的类生的类菜单控件菜单控件MenuStrip通用对话框通用对话框用户自定义对话框用户自定义对话框