记事本程序设计.ppt

上传人:夺命阿水 文档编号:262967 上传时间:2023-04-03 格式:PPT 页数:53 大小:357.50KB
返回 下载 相关 举报
记事本程序设计.ppt_第1页
第1页 / 共53页
记事本程序设计.ppt_第2页
第2页 / 共53页
记事本程序设计.ppt_第3页
第3页 / 共53页
记事本程序设计.ppt_第4页
第4页 / 共53页
记事本程序设计.ppt_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《记事本程序设计.ppt》由会员分享,可在线阅读,更多相关《记事本程序设计.ppt(53页珍藏版)》请在课桌文档上搜索。

1、记事本程序设计,一、托盘中的控件,statusStrip:状态栏contextMenuStrip;fontDialog;openFileDialog;saveFileDialog;menuStripcolorDialog,二、应用程序窗体结构,Form1:程序主窗体,程序入口Form2:查找窗口Form3:替换窗口Form4:转到下一行窗口“关于”窗口采用MessageBox形式,四、主要功能菜单介绍,关于TextBox的设置:Dock属性设置为Fill,保证文本框的大小Modifiers:表示对象的可见级别,设置为PublicScrolbars:设置为Both,表示为多行编辑时,自动出现滚动

2、条,五、“打开”程序设计,设计思路:需要一个窗口级变量,用于判定是打开一个原有的文件,还是当前已经输入文字,需要保存。该变量为:public bool istext=false;/文本框是否改变,if(this.istext=false)/判断文本框是否改变 openFileDialog1.Filter=文本文档(*.txt)|*.txt|所有文件(*.*)|*.*;openFileDialog1.FileName=*.txt;openFileDialog1.Title=打开文件;if(openFileDialog1.ShowDialog()=DialogResult.OK)filename=

3、openFileDialog1.FileName;string filename2=filename.Split();/只取文件名,StreamReader sr=new StreamReader(openFileDialog1.FileName,Encoding.Default);textBox1.Text=sr.ReadToEnd();sr.Close();this.istext=false;this.Text=filename2filename2.Length-1+-记事本;,else DialogResult dr=MessageBox.Show(文本已更改,是否保存?,提示,Mess

4、ageBoxButtons.YesNoCancel,MessageBoxIcon.Warning);if(dr=DialogResult.Yes)/MessageBox.Show(dr.ToString();this.保存ToolStripMenuItem.PerformClick();this.打开ToolStripMenuItem.PerformClick();else if(dr=DialogResult.No)this.istext=false;this.打开ToolStripMenuItem.PerformClick();,六、“保存”程序设计,设计思路:首先确定文件是否是打开的已有

5、的文件,如果是,则只需要直接写入就可以了;如果不是,则表明需要重新创建文件来保存,则执行“另存为”菜单条的功能。需要一个窗口级别的变量,用来保存文件名。public string filename=null;/打开的文件名,private void 保存ToolStripMenuItem_Click(object sender,EventArgs e)if(filename!=null)/是否打开过文件?StreamWriter sw=new StreamWriter(filename,false,Encoding.Default);sw.Write(textBox1.Text);sw.Clo

6、se();this.istext=false;else/不然就另存为 this.另存为ToolStripMenuItem.PerformClick();,七、“另存为”程序设计,设计思路:不管是没有保存过的文件保存还是将已有的文件重新存,都是一个新建文件,并保存的过程。因此只要保存文件对话框返回的是确定,则需要以给定的文件名进行保存,否则的话,则取消操作。由于当不需要保存时,将取消操作,继续在原有的编辑界面,所以此时不再需要关闭窗口,设置一个窗口级变量ee为FormClosingEventArgs类型。为FormClosed事件提供数据 public FormClosingEventArgs

7、ee;/关闭事件存放,private void 另存为ToolStripMenuItem_Click(object sender,EventArgs e)saveFileDialog1.Filter=文本文档(*.txt)|*.txt;saveFileDialog1.FileName=*.txt;saveFileDialog1.Title=保存文件;if(saveFileDialog1.ShowDialog()=DialogResult.OK)StreamWriter sw=new StreamWriter(saveFileDialog1.FileName,false,Encoding.Def

8、ault);sw.Write(textBox1.Text);sw.Close();string filename2=saveFileDialog1.FileName.Split();this.Text=filename2filename2.Length-1+-记事本;this.istext=false;else if(isclose)ee.Cancel=true;isclose=false;,八、“新建”程序设计,设计思路:当文本框的内容被改变(通过窗口级变量istext)判断,则需要打开一个保存文件对话框以保存文件,若回答否,则需要将文本框的内容全部清空,从头开始。这里需要注意的是,需要将相

9、对应的窗口级变量的值改变,private void 新建ToolStripMenuItem_Click(object sender,EventArgs e)if(this.istext)DialogResult dr=MessageBox.Show(文本已更改,是否保存?,提示,MessageBoxButtons.YesNoCancel,MessageBoxIcon.Warning);if(dr=DialogResult.Yes)this.保存ToolStripMenuItem.PerformClick();this.新建ToolStripMenuItem.PerformClick();els

10、e if(dr=DialogResult.No)textBox1.Clear();this.Text=无标题-记事本;this.istext=false;this.filename=null;,else textBox1.Clear();this.Text=无标题-记事本;this.istext=false;this.filename=null;,九、“退出”程序设计,private void 退出ToolStripMenuItem_Click(object sender,EventArgs e)Application.Exit();/退出程序,十、关于TextBox控件,Undo()方法:C

11、ut()方法:Copy()方法Paste()方法:SelectedText属性:,private void 撤消ToolStripMenuItem_Click(object sender,EventArgs e)textBox1.Undo();private void 剪切ToolStripMenuItem_Click(object sender,EventArgs e)textBox1.Cut();,private void 复制ToolStripMenuItem_Click(object sender,EventArgs e)textBox1.Copy();/复制文本 private vo

12、id 粘贴ToolStripMenuItem_Click(object sender,EventArgs e)textBox1.Paste();/粘贴文本 private void 删除ToolStripMenuItem_Click(object sender,EventArgs e)textBox1.SelectedText=;/删除文本,十一、“查找”功能实现,设计思路:需要单独设计一个菜单,用以询问需要查找的字符串。并确定与主窗口之间的关系。由于需要查找的关键字需要跨按钮传递,因此需要设计窗口级的变量public string ktext;/查找的关键字,另外定义public strin

13、g f1text;/为需要查询的文本。,private void 查找ToolStripMenuItem_Click(object sender,EventArgs e)Form2 f2=new Form2();f2.mainForm=this;f2.Show();,“查找”窗口中取消按钮的实现,等同于不执行操作,直接退回到主窗口private void button2_Click(object sender,EventArgs e)Close();,“查找”功能实现,设计思路:根据区分大小写按钮分别处理,如果需要区分大小写,则是一个完全比对,如果不需要区分大小写的话,则将需要查询的关键字以及

14、文本内容全部转成小写进行查询。在查询时,首先将需要查询的文本内容从主窗口中的TextBox控件中取出,然后再进行查询。由于查找成功以后,需要在主窗口中定位关键字,所以需要将主窗口中的变量public string f1ktext=null;以及public bool maxmin;进行相应赋值。,向上或者向下查找,必须二选一,在向下查找时,首先确定查找关键字在文本中第一个的索引位置,若索引位置存在,则将光标定位在该文本上,若不存在,则给出提示框。向下查找向上查找的主要区别是,前者的起始位置是从当前光标处开始到文本结束,查找第一个匹配的索引位置,而向上查找是从文本开始到当前光标位置,确定关键字在

15、文本中的最后一个索引位置。不管向上或者向下查找,都是从当前光标处开始若重复多次按查找下一个,则每次都将重新确定查找位置。都会因为当前光标位置的不同而不同。,private void button1_Click(object sender,EventArgs e)if(checkBox1.Checked)/区分大小写 f1text=this.mainForm.textBox1.Text;ktext=textBox1.Text;this.mainForm.f1ktext=textBox1.Text;this.mainForm.maxmin=true;else/不区分大小写 f1text=this.

16、mainForm.textBox1.Text.ToLower();ktext=textBox1.Text.ToLower();this.mainForm.f1ktext=textBox1.Text;this.mainForm.maxmin=false;,if(radioButton2.Checked)/向下查找 int temp=f1text.IndexOf(ktext,mainForm.textBox1.SelectionStart+mainForm.textBox1.SelectedText.Length);/查找位置 if(temp=0)this.mainForm.textBox1.Se

17、lect(temp,ktext.Length);/将关键字所在文本选中 this.mainFo this.mainForm.Focus();else MessageBox.Show(找不到+ktext+,提示,MessageBoxButtons.OK,MessageBoxIcon.Question);,else/向上查找 int temp=-1;if(mainForm.textBox1.SelectionStart1)temp=f1text.LastIndexOf(ktext,mainForm.textBox1.SelectionStart-1);/查找位置 if(temp=0)this.ma

18、inForm.textBox1.Select(temp,ktext.Length);this.mainForm.textBox1.ScrollToCaret();this.mainForm.Focus();else MessageBox.Show(找不到+ktext+,提示,MessageBoxButtons.OK,MessageBoxIcon.Question);,十二、“查找下一个”程序实现,设计思路:如果当时已经有了可以查询的关键字,和是否按大小写查询,则不需要再弹出查找菜单,可直接按照前面的查询直接查询就可以。如果没有,则需要调用“查询”子菜单,向用户询问关键字、是否区分大小写。代码算

19、法与前面雷同,略,“查找”菜单的细节处理,只有当输入查找内容,即文本框中的文本长度大于零时,才能查找,否则,查找按钮无效private void textBox1_TextChanged(object sender,EventArgs e)if(textBox1.Text.Length 0)button1.Enabled=true;else button1.Enabled=false;,十三、“替换”功能程序实现,private void 替换ToolStripMenuItem_Click(object sender,EventArgs e)Form3 f3=new Form3();f3.ma

20、inForm=this;f3.Show();,设计思路:当查找文本框中有文本时,查找和替换以及全部替换才可用,注意替换对话框中不一定需要有文本。private void textBox1_TextChanged(object sender,EventArgs e)if(textBox1.Text.Length 0)/如果关键字大于0,按钮可用 button1.Enabled=true;button2.Enabled=true;button3.Enabled=true;else/按钮不可用 button1.Enabled=false;button2.Enabled=false;button3.E

21、nabled=false;,查找下一个与前面的设计思路相同,略替换:直接将主窗口中的文本替换为子菜单中的替换对话框中的文本即可。private void button2_Click(object sender,EventArgs e)/替换 if(textBox1.Text=this.mainForm.textBox1.SelectedText)/如果文本框选定内容与关键字相同才替换 this.mainForm.textBox1.SelectedText=textBox2.Text;else/不相同就重新查找 button1.PerformClick();,全部替换:实际上是一个循环,从文本开

22、始到文本结束,依次替换。并使用一个局部变量统计替换的次数。,“编辑”菜单程序实现,为什么需要:以确定当按下编辑菜单时,撤销、复制、粘贴等菜单条哪些可以使用,哪些不能使用,private void 编辑ToolStripMenuItem_Click(object sender,EventArgs e)if(Clipboard.GetDataObject().GetDataPresent(DataFormats.Text)/是否有可粘贴文本 this.粘贴ToolStripMenuItem.Enabled=true;else this.粘贴ToolStripMenuItem.Enabled=fal

23、se;if(textBox1.CanUndo)/是否可以撤消 this.撤消ToolStripMenuItem.Enabled=true;else this.撤消ToolStripMenuItem.Enabled=false;/,if(textBox1.SelectedText.Length 0)/是否可以剪切、复制、删除 this.剪切ToolStripMenuItem.Enabled=true;this.复制ToolStripMenuItem.Enabled=true;this.删除ToolStripMenuItem.Enabled=true;else this.剪切ToolStripMe

24、nuItem.Enabled=false;this.复制ToolStripMenuItem.Enabled=false;this.删除ToolStripMenuItem.Enabled=false;/,if(textBox1.Text.Length 0)/没有文本的情况下查找、替换不可用 this.查找ToolStripMenuItem.Enabled=true;this.查找下一个ToolStripMenuItem.Enabled=true;this.替换ToolStripMenuItem.Enabled=true;else this.查找ToolStripMenuItem.Enabled=

25、false;this.查找下一个ToolStripMenuItem.Enabled=false;this.替换ToolStripMenuItem.Enabled=false;/,十四、“转到”程序实现,设计思路:需要用户输入转到第几行,所以需要一个菜单,让用户输入行数。private void 转到ToolStripMenuItem_Click(object sender,EventArgs e)Form4 f4=new Form4();f4.mainForm=this;f4.Show();,如何确定文本的行数:this.mainForm.textBox1.Lines.Length算法设计思路

26、:如果输入的行数大于文本的行数则直接报错。若在合理范围,采用循环确定每一行的字符数。然后重新设置光标位置。,private void button1_Click(object sender,EventArgs e)if(int.Parse(textBox1.Text)this.mainForm.textBox1.Lines.Length)MessageBox.Show(行数超过范围,记事本跳行);else int temp=0;for(int i=0;i int.Parse(textBox1.Text)-1;i+)temp=temp+this.mainForm.textBox1.Linesi.

27、Length+1;this.mainForm.textBox1.SelectionStart=temp;this.mainForm.Focus();,“转到”的细节处理,private void textBox1_KeyPress(object sender,KeyPressEventArgs e)if(!char.IsNumber(e.KeyChar)MessageBox.Show(你输入的是+e.KeyChar.ToString()+,请输入数字);,十五、“全选”程序设计,private void 全选ToolStripMenuItem_Click(object sender,Event

28、Args e)textBox1.SelectAll();,十六、“自动换行”程序设计,private void 自动换行ToolStripMenuItem_Click(object sender,EventArgs e)if(自动换行ToolStripMenuItem.Checked=true)/是否自动换行 textBox1.WordWrap=true;else textBox1.WordWrap=false;,十七、字体设置,private void 字体ToolStripMenuItem_Click(object sender,EventArgs e)if(fontDialog1.Sho

29、wDialog()=DialogResult.OK)/打开字体对话框 textBox1.Font=fontDialog1.Font;/设置字体,十八、文本颜色设置,private void 文本颜色ToolStripMenuItem_Click(object sender,EventArgs e)if(colorDialog1.ShowDialog()=DialogResult.OK)textBox1.ForeColor=colorDialog1.Color;,十九、背景颜色设置,private void 文本背景ToolStripMenuItem_Click(object sender,Ev

30、entArgs e)if(colorDialog1.ShowDialog()=DialogResult.OK)textBox1.BackColor=colorDialog1.Color;,二十、“帮助”程序设计,private void 帮助主题ToolStripMenuItem_Click(object sender,EventArgs e)Help.ShowHelp(this,notepad.chm);:,二十一、“状态栏”程序设计,private void 状态栏ToolStripMenuItem_Click(object sender,EventArgs e)if(状态栏ToolStr

31、ipMenuItem.Checked=true)/是否显示状态栏 statusStrip1.Visible=true;else statusStrip1.Visible=false;,二十二、程序初始状态设计,private void Form1_Load(object sender,EventArgs e)this.新建ToolStripMenuItem.PerformClick();,二十三、程序关闭时,private void Form1_FormClosing(object sender,FormClosingEventArgs e)if(this.istext)DialogResul

32、t dr=MessageBox.Show(文本已更改,是否保存?,提示,MessageBoxButtons.YesNoCancel,MessageBoxIcon.Warning);if(dr=DialogResult.Yes)isclose=true;ee=e;this.保存ToolStripMenuItem.PerformClick();else if(dr=DialogResult.No)istext=false;Close();else e.Cancel=true;,二十四、时间和日期的追加,private void 时间日期ToolStripMenuItem_Click(object sender,EventArgs e)textBox1.AppendText(DateTime.Now.ToString();/在文本框后面追加 时间日期,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号