设计一种带工具栏和留言功能的记事本

2014-07-28 05:05王彩霞
电脑知识与技术 2014年18期
关键词:记事本工具栏

摘要:普通记事本是用户常用的软件之一,它的功能非常强大。但用它读文件时,如果要把读后感当成独立的文件记录下来,需要新建记事本文件,不方便以后查找。如果记事本能提供留言功能,可将读后感存放到留言板,方便以后读取。该记事本也不提供工具栏和文字颜色的设置,而工具栏是应用程序中必不可少的,它以形象的图标为用户提供了方便、快捷的操作。为此,该文设计一种带有工具栏和留言功能的记事本,它不仅能够进行文字编辑,字体颜色设置,自动换行,还能对文件进行新建、打开、保存、退出等操作,为用户使用记事本提供了方便。

关键词:记事本;工具栏;留言板

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)18-4166-04

Design A Toolbar and Message Functions Notepad

WANG Cai-xia

(College of Electronic Information Engineering, Anhui Business College, Wuhu 241000,China)

Abstract: Ordinary notepad is one of the common software, It is very powerful. But when it is used to read files, If the thoughts as a separate file record, the need for new notepad file, it is not convenient search the file in the future. If the notepad can provide message function, the thoughts store to the message board, to facilitate future reading. This notepad does not provide a toolbar and a text color settings, the toolbar is essential in the application, it provides a convenient, fast operation to the image of the icon for the user. for that reason, This paper design a toolbar and message functions notepad, It can not only make text editing, font color settings, wrap, but also new, open, save, exit and other operations on files, to provide convenience for the users to use notepad.

Key words: notepad;toolbar;message board

目前,类似记事本的文档编辑器多种多样,有GridinSoft Notepad,Notepad++,EmEditor,UEStudio,UniRed,xint,win32pad,SkimEdit[1]。其功能也各有千秋,应有尽有。有的可以改变字体,改变文字颜色。这些软件因为功能太复杂,初学者难以掌握,而且用它们制作的文件比文本编辑器制作的文件要大很多,不方便存储。相对于初学者来说,一个文本编辑器只需一些简单实用的功能即可。该文依据这样的思想,设计一种带工具栏和留言功能的记事本,它不仅能实现文字的基本编辑功能,如复制、粘贴、剪切、自动换行、颜色、字体等,也能进行文件的新建、打开、保存、退出等功能,还提供工具栏和留言功能,为用户提供方便。

1 功能描述

经过调查、分析,该文设计实现以下功能。

1)可以实现文件的新建、打开、保存、退出功能。

2)工具栏提供文件的新建、打开、保存、退出、复制、剪贴、粘贴、清除、全选等功能。

3)实现字体和颜色、自动换行的设置。

4)能实现留言和读取留言功能。

2 界面设计和属性设置

1)打开VS 2008开发工具,新建一个Windows应用程序,命名为WinNotepad,其属性设置为:Text:多功能记事本 ;StartPosition:CenterScreen ;选择路径存盘。

2)在窗体上拖放1个MenuStrip[2],添加5个菜单项,将其Text属性分别改为:文件、编辑、格式、留言板、帮助。在文件菜单项下依此添加4个子菜单项,将其Text属性分别改为:新建、打开、保存、退出,Name属性分别为:MI_New,MI_Open,MI_Save,MI_Exit。编辑菜单:剪切、复制、粘贴、全选、删除,Name属性分别为:MI_Cut,MI_Copy,MI_Paste, MI_SelectAll,MI_Delete。格式菜单:自动换行、字体、颜色,Name属性分别为:MI_Wrop, MI_Font,MI_Color。留言板菜单:写留言、读留言,Name属性分别为:MI_Write,MI_Read。帮助菜单:关于记事本。

3)在窗体上拖放1个ToolStrip[3],命名为toolStrip1,Text:工具栏。在工具栏上依次添加14个toolStripButton,分别命名为:ts_New、ts_Open、ts_Save、ts_Exit、ts_Cut、ts_Copy、ts_Paste、ts_SelectAll、ts_Delete、ts_Font、ts_Color、ts_Wrop、ts_WriteNote、ts_ReadNote,Text属性分别为:新建、打开保存、退出、剪切、复制、粘贴、全选、删除、字体、颜色、自动换行、写留言、读留言。并将每个菜单设置相对应的快捷键,在ShortcutKeys属性中分别设置为:Ctrl+N、Ctrl+O、Ctrl+S、Ctrl+W、Ctrl+X、Ctrl+C、Ctrl+V、Ctrl+A、Delte、Ctrl+D、Ctrl+E(写留言、读留言不设置快捷键)、并插入相应的图标,如图1所示(设置好属性后)。endprint

图 1 多功能记事本界面

4)在窗体最下方拖放1个statusStrip,命名为statusStrip1,Text:状态栏。在状态栏添加toolStripStatusLabel,命名为:tss_lbl1,Text: 欢迎使用多功能记事本。

5)在窗体主工作区拖放1个richTextBox控件,命名为:rtxt_Notepad,让它在父容器中停靠。给它加上快捷菜单:拖放1个contextMenuStrip,命名为:cMS_Cut,Text:快捷菜单,在快捷菜单中添加项:剪切、复制、粘贴、全选、清除,并添加这5项的图标和快捷键。选定rtxt_notepad,在其contextMenuStrip属性中选择cMS_Cut,让快捷菜单和控件相关联[4]。

3 代码编写

在各菜单下依此双击,产生该菜单的Click()事件,我们由易到难写代码。

1)编辑菜单

编辑菜单包括:剪切、复制、粘贴、全选和清除,这几项代码非常简单,只需调用控件rtxt_Notepad的相关事件即可。剪切、复制、粘贴、全选和清除分别调用rtxt_Notepad控件自带的Cut()方法,Copy()方法;Paste()方法,rtxt_Notepad.Cut()方法;SelectAll()方法和Clear()方法。

2)格式菜单

格式菜单包括:字体、颜色、自动换行。先从控件中找到“字体对话框”和“颜色对话框”拖放到工作区,将fontDialog1的Name属性改为:fd_Font,将colorDialog1的Name属性改为:cd_Color代码如下:

private void MS_Font_Click(object sender, EventArgs e)

{//字体

fd_Font.ShowApply = true;

fd_Font.ShowColor = true;

fd_Font.Font = rtxt_Notepad.Font;

fd_Font.Color = rtxt_Notepad.ForeColor;

if (fd_Font.ShowDialog() == DialogResult.OK)

{rtxt_Notepad.Font = fd_Font.Font;

rtxt_Notepad.ForeColor = fd_Font.Color;

}}

private void MS_Color_Click(object sender, EventArgs e)

{//颜色

cd_Color.AllowFullOpen = true;

if (cd_Color.ShowDialog() == DialogResult.OK)

{ rtxt_Notepad.ForeColor = cd_Color.Color; }

}

private void MS_Worp_Click(object sender, EventArgs e)

{//自动换行

if (rtxt_Notepad.WordWrap)

{ rtxt_Notepad.WordWrap = false; }

else

{ rtxt_Notepad.WordWrap = true; }

}

3)留言板菜单

在项目WinNotepad上添加2个Windows窗体,分别命名为:frmWriteNote、frmReadNote,

图2 写留言界面 图3 读留言界面

两个窗体上均有一个richTextBox1控件,和2个Button控件,frmWriteNote窗体中Button1命名为:btnWriteNote、Text:写留言,richTextBox1的Name属性改为:rtxt_Write. rmReadNote窗体中Button1命名为:btnReadNote、Text:读留言,richTextBox1的Name属性改为:rtxt_Read.如图2、图3所示,代码如下。

private void MI_Write_Click(object sender, EventArgs e)

{frmWriteNote frm = new frmWriteNote();

frm.Show();

}

private void MI_Read_Click(object sender, EventArgs e)

{frmReadNote frm = new frmReadNote();

frm.Show();

}

在窗体frmWriteNote中添加命名空间:using System.IO;在btnWriteNote按钮下双击,产生Click事件:

private void btnWriteNote_Click(object sender, EventArgs e)

{//写留言

StreamWriter sw = new StreamWriter(@"d:\temp.txt",true );

sw.WriteLine(rtxt_Write .Text );

sw.Flush();

sw.Close();

MessageBox.Show("留言成功","提示");

}

在窗体frmReadNote中添加命名空间:using System.IO;在btnReadNote按钮下双击,产生Click事件:

private void btnReadNote_Click(object sender, EventArgs e)

{//读留言

StreamReader sr = new StreamReader(@"d:\temp.txt");

rtxt_Read .Text=sr.ReadLine() + "\n";

while (!sr.EndOfStream )

{rtxt_Read.Text+=sr.ReadLine() + "\n";

}sr.Close ();

}

4)文件菜单

文件菜单下包括新建、打开、保存、退出,先对保存写代码,因为在新建和退出时,我们要判断文档是否为空,如果不为空就提示保存,否则新建或退出。先找到“保存对话框”和“打开对话框”控件,将其拖放到工作区,Name属性分别为:sf_dialog,op_dialog,将两个控件的Filter属性都改为:“文本文档(*.txt)|(*.txt)|所有文档(*.*)|(*.*)”,这是过滤保存文件和打开文件的类型。主要代码如下:

private void MI_Save_Click(object sender, EventArgs e)

{//保存

if (sf_dialog.ShowDialog() == DialogResult.OK)

{rtxt_Notepad.SaveFile(sf_dialog.FileName,RichTextBoxStreamType.PlainText);

}}

private void MI_New_Click(object sender, EventArgs e)

{//新建

if (rtxt_Notepad.Text != "")

{if (MessageBox.Show("内容不为空,需要保存吗", "警告", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)

{ //保存(略) 同保存代码 }

else

{ rtxt_Notepad.Text = ""; }

}}

private void MI_Exit_Click(object sender, EventArgs e)

{//退出

if (rtxt_Notepad.Text != "")

{if (MessageBox.Show("内容不为空,需要保存吗", "警告", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)

{ //保存(略) 同保存代码

Application.Exit();

}}

else

{ Application.Exit(); }

}

private void MI_Open_Click(object sender, EventArgs e)

{//打开

if (op_dialog.ShowDialog() == DialogResult.OK)

{StreamReader sr = new StreamReader(op_dialog.FileName, Encoding.Default);

rtxt_Notepad.Text = sr.ReadLine() + "\n";

if (!sr.EndOfStream)

{rtxt_Notepad.Text += sr.ReadLine() + "\n";

}sr.Close();

this.Text = op_dialog.FileName;

}}

5)工具栏按钮和菜单项关联

新建等菜单的代码在上面已经完成,新建按钮和新建菜单功能相同,代码也相同,如果不想在新建按钮下重复新建菜单的代码,就必须让它们相关联。下面以工具栏中新建按钮为例,说明工具栏各按钮和对应的菜单项如何相关联。选定新建按钮ts_New,右击选择属性,在属性表的事件面板,找到Click事件,在下拉框选中“MI_New_Click”事件,其他的工具按钮同样的操作,选定对应的菜单事件即可。

4 运行结果

完成代码后,按F5调试,多功能记事本各功能都能正常操作,将写留言和读留言窗体运行结果显示如图4、图5所示。

图4 写留言运行结果 图5 读留言运行结果

5 总结

本文通过记事本功能的描述,设计了工具栏和留言功能,工具栏为操作记事本的用户提供了方便,留言功能为用户提供了交

(下转第4192页)

(上接第4169页)

互的场所,在设计过程中,需要注意工具栏和菜单项的关联,以及控件和快捷菜单之间的关联。最后用C#语言进行实现,运行结果显示,各功能均能正常操作。由于篇幅关系,该文没有设计状态栏的具体实现,有状态栏的具体实现会更好!

参考文献:

[1] 韦建忠.Visual Basic Tex tBox 控件实现记事本功能的程序设计[J].广西师范学院学报:自然科学版,2007,9(24):94-96.

[2] 解二虎,李俊玲.用VFP程序设计带工具栏的记事本[J].集宁师专学.2008,4(30):62-64.

[3] 欧阳甜子.用C#实现Windows 记事本功能的程序设计[J].软件导刊,2008(2):56-58.

[4] 谷震离.胡付田,杨喜娟.记事本应用程序的开发与设计[J]许昌学院学报,2003,3(22):102-105.

猜你喜欢
记事本工具栏
有关记事本之危险的提示(节选)
做个树懒记事本
“玩转”西沃白板
小狗记事本
记事本里的信息技术课
定制主界面 高效用Word
DIY个性备课夹
轻松DIY:用好IE8浏览器中的自定义功能等
以最快的速度为填空题留空