记事本C#
用C#语言实现记事本目录用C#语言实现记事本一、程序设计案例二、记事本界面设计1、建立基本控件建立窗体窗体属性MenuStrip菜单控件ToolStrip工具栏控件RichTextBox多格式文本框控件StatusStrip状态栏控件OpenFileDialog打开对话框SaveFileDialog保存对话框FontDialog字体对话框Timer计时器控件记事本界面2、各种控件代码3、工具栏代码4、计时器代码三、关于记事本1、界面设计2、核心代码四、结果截图五、结果功能视频演示六、仓库连接地址一、程序设计案例使用Visual C# 2019设计一个Windows应用程序——记事本实现Windows自带的记事本的部分功能:具有文件的新建、打开、保存功能文字的复制、粘贴、删除功能字体类型、格式的设置功能查看日期时间等功能并且用户可以根据需要显示或者隐藏工具栏和状态栏还可以任意更改字体的字体类型、大小和颜色并在状态栏中显示时间。为了方便用户的操作还在程序的窗体上放置了一个工具栏。二、记事本界面设计1、建立基本控件建立窗体新建一个Windows窗体应用程序并命名为“Notepad”窗体属性MenuStrip菜单控件ToolStrip工具栏控件单击窗体左边会出现工具箱→ 找到“ToolStrip” →拖动到窗体中→单击工具栏→右下角属性→修改Name属性为“tlsNotepad”右击工具栏→ 插入标准项右击工具栏→ 编辑项 可以看到我们的按钮成员在这里我们可以删除或者增加RichTextBox多格式文本框控件单击窗体左边会出现工具箱→ 找到“RichTextBox” →拖动到窗体中→单击工具栏→右下角属性→修改Name属性为“rtxtNotepad”Anchor属性选择“TopBottomLeftRight”这样当窗体大小改变时RichTextBox控件的大小也会跟着改变StatusStrip状态栏控件添加StatusStrip控件将其Name属性设为“stsNotepad”将Dock属性设为“Bottom”再将Anchor属性设为“BottomLeftRight”。然后单击右边的按钮打开【项集合编辑器】对话框下拉列表中保留默认的选择“StatusLabel”然后单击【添加】按钮依次添加2个StatusLabel并分别命名为“tssLbl1”和“tssLbl2”再将tssLbl1的Text属性设为“就绪” tssLbl2的Text属性设为“显示日期、时间”。OpenFileDialog打开对话框OpenFileDialog控件的Name属性为“odlgNotepad”Filter属性设为“RTF文件|.rtf|所有文件|.*”。SaveFileDialog保存对话框SaveFileDialog控件的Name属性为“sdlgNotepad”FileName属性改为“无标题”Filter属性设为“RTF文件|*.rtf”。FontDialog字体对话框FontDialog控件的Name属性为“fdlgNotepad”Timer计时器控件Timer控件的Name属性设为“tmrNotepad”Enabled激活的可行的属性设为“True”Interval间隔间距幕间时间属性设为“1000”表示1秒种触发一次Tick事件即1秒钟改变一次时钟记事本界面2、各种控件代码代码如下public partial class frmNotepad:Form{//*************************************************************************/* 布尔变量b用于判断文件是新建的还是从磁盘打开的 true表示文件是从磁盘打开的false表示文件是新建的默认值为false*/bool bfalse;/* 布尔变量s用于判断文件件是否被保存 true表示文件是已经被保存了false表示文件未被保存默认值为true*/bool strue;//*************************************************************************publicfrmNotepad(){InitializeComponent();}privatevoidfrmNotepad_Load(object sender,EventArgs e){}privatevoidrtxtNotepad_TextChanged(object sender,EventArgs e){// 文本被修改后设置s为false表示文件未保存sfalse;}privatevoidtsmiFile_Click(object sender,EventArgs e){}privatevoidtsmiNew_Click(object sender,EventArgs e){// 判断当前文件是否从磁盘打开或者新建时文档不为空并且文件未被保存if(btrue||rtxtNotepad.Text.Trim()!){// 若文件未保存if(sfalse){string result;resultMessageBox.Show(文件尚未保存,是否保存?,保存文件,MessageBoxButtons.YesNoCancel).ToString();switch(result){caseYes:// 若文件是从磁盘打开的if(btrue){// 按文件打开的路径保存文件rtxtNotepad.SaveFile(odlgNotepad.FileName);}// 若文件不是从磁盘打开的elseif(sdlgNotepad.ShowDialog()DialogResult.OK){rtxtNotepad.SaveFile(sdlgNotepad.FileName);}strue;rtxtNotepad.Text;break;caseNo:bfalse;rtxtNotepad.Text;break;}}}}privatevoidtsmiOpen_Click(object sender,EventArgs e){if(btrue||rtxtNotepad.Text.Trim()!){if(sfalse){string result;resultMessageBox.Show(文件尚未保存,是否保存?,保存文件,MessageBoxButtons.YesNoCancel).ToString();switch(result){caseYes:if(btrue){rtxtNotepad.SaveFile(odlgNotepad.FileName);}elseif(sdlgNotepad.ShowDialog()DialogResult.OK){rtxtNotepad.SaveFile(sdlgNotepad.FileName);}strue;break;caseNo:bfalse;rtxtNotepad.Text;break;}}}odlgNotepad.RestoreDirectorytrue;if((odlgNotepad.ShowDialog()DialogResult.OK)odlgNotepad.FileName!){rtxtNotepad.LoadFile(odlgNotepad.FileName);//打开代码语句btrue;}strue;}privatevoidtsmiSave_Click(object sender,EventArgs e){// 若文件从磁盘打开并且修改了其内容if(btruertxtNotepad.Modifiedtrue){rtxtNotepad.SaveFile(odlgNotepad.FileName);strue;}elseif(bfalsertxtNotepad.Text.Trim()!sdlgNotepad.ShowDialog()DialogResult.OK){rtxtNotepad.SaveFile(sdlgNotepad.FileName);//保存语句strue;btrue;odlgNotepad.FileNamesdlgNotepad.FileName;}}privatevoidtsmiSaveAs_Click(object sender,EventArgs e){if(sdlgNotepad.ShowDialog()DialogResult.OK){rtxtNotepad.SaveFile(sdlgNotepad.FileName);strue;}}privatevoidtsmiClose_Click(object sender,EventArgs e){Application.Exit();//程序结束}privatevoidtsmiUndo_Click(object sender,EventArgs e){rtxtNotepad.Undo();//撤销}privatevoidtsmiCopy_Click(object sender,EventArgs e){rtxtNotepad.Copy();//复制}privatevoidtsmiCut_Click(object sender,EventArgs e){rtxtNotepad.Cut();//剪切}privatevoidtsmiPaste_Click(object sender,EventArgs e){rtxtNotepad.Paste();//粘贴}privatevoidtsmiSelectAll_Click(object sender,EventArgs e){rtxtNotepad.SelectAll();//全选}privatevoidtsmiDate_Click(object sender,EventArgs e){rtxtNotepad.AppendText(System.DateTime.Now.ToString());//显示当前日期}privatevoidtsmiAuto_Click(object sender,EventArgs e){if(tsmiAuto.Checkedfalse){tsmiAuto.Checkedtrue;// 选中该菜单项rtxtNotepad.WordWraptrue;// 设置为自动换行}else{tsmiAuto.Checkedfalse;rtxtNotepad.WordWrapfalse;}}privatevoidtsmiFont_Click(object sender,EventArgs e){fdlgNotepad.ShowColortrue;if(fdlgNotepad.ShowDialog()DialogResult.OK){rtxtNotepad.SelectionColorfdlgNotepad.Color;rtxtNotepad.SelectionFontfdlgNotepad.Font;}}privatevoidtsmiToolStrip_Click(object sender,EventArgs e){Point point;if(tsmiToolStrip.Checkedtrue){// 隐藏工具栏时把坐标设为024,因为菜单的高度为24pointnewPoint(0,24);tsmiToolStrip.Checkedfalse;tlsNotepad.Visiblefalse;// 设置多格式文本框左上角位置rtxtNotepad.Locationpoint;// 隐藏工具栏后增加文本框高度rtxtNotepad.HeighttlsNotepad.Height;}else{/* 显示工具栏时多格式文本框左上角位置的位置为049 因为工具栏的高度为25加上菜单的高度24后为49 */pointnewPoint(0,49);tsmiToolStrip.Checkedtrue;tlsNotepad.Visibletrue;rtxtNotepad.Locationpoint;rtxtNotepad.Height-tlsNotepad.Height;}}privatevoidtsmiStatusStrip_Click(object sender,EventArgs e){if(tsmiStatusStrip.Checkedtrue){tsmiStatusStrip.Checkedfalse;stsNotepad.Visiblefalse;rtxtNotepad.HeightstsNotepad.Height;}else{tsmiStatusStrip.Checkedtrue;stsNotepad.Visibletrue;rtxtNotepad.Height-stsNotepad.Height;}}privatevoidtsmiAbout_Click(object sender,EventArgs e){frmAbout ob_FrmAboutnewfrmAbout();ob_FrmAbout.Show();}}3、工具栏代码privatevoidtlsNotepad_ItemClicked(object sender,ToolStripItemClickedEventArgs e){intn;// 变量n用来接收按下按钮的索引号从0开始ntlsNotepad.Items.IndexOf(e.ClickedItem);switch(n){case0:tsmiNew_Click(sender,e);break;case1:tsmiOpen_Click(sender,e);break;case2:tsmiSave_Click(sender,e);break;/*case 3: tsmiCopy_Click(sender, e); break;*/// 我们不用case3case4:tsmiCut_Click(sender,e);break;case5:tsmiPaste_Click(sender,e);break;/*case 6: tsmiPaste_Click(sender, e); break; */// 我们不用case6case7:tsmiAbout_Click(sender,e);break;}}4、计时器代码privatevoidtmrNotepad_Tick(object sender,EventArgs e){tssLbl2.TextSystem.DateTime.Now.ToString();}三、关于记事本1、界面设计2、核心代码privatevoidbtnOk_Click(object sender,EventArgs e){this.Close();}privatevoidLinkLabel_LinkClicked(object sender,LinkLabelLinkClickedEventArgs e){System.Diagnostics.Process.Start(http://www.baidu.com);}四、结果截图五、结果功能视频演示视频链接https://v.qq.com/x/page/x32432ouwdt.html六、仓库连接地址源代码https://gitee.com/its-just-love/Windows_Notepad/blob/master/Windows_Notepad