记事本简介
本次写的是一个记事本功能的winform窗体应用,其中功能包括文件保存另存为,修改字体,复制粘贴等等功能。
以下是MenuStrip控件的相关属性
Text属性 | Name属性 | ShortcutKeys属性 (快捷键) | ShowShortcutKeys属性 |
文件(&F) | tsmiFile | None | - |
新建(&N) | tsmiNew | Ctrl+N | True |
打开(&O) | tsmiOpen | Ctrl+O | True |
保存(&S) | tsmiSave | Ctrl+S | True |
另存为(&A) | tsmiSaveAs | None | - |
分隔符(用“-”来分隔) | |||
退出(&X) | tsmiClose | None | - |
Text属性 | Name属性 | ShortcutKeys属性 | ShowShortcutKeys属性 | |||||
编辑(&E) | tsmiEdit | None | - | |||||
撤销(&U) | tsmiUndo | Ctrl+Z | True | |||||
分隔符 | ||||||||
复制(&C) | tsmiCopy | Ctrl+C | True | |||||
剪切(&T) | tsmiCut | Ctrl+X | True | |||||
粘贴(&P) | tsmiPaste | Ctrl+V | True | |||||
分隔符 | ||||||||
全选(&A) | tsmiSelectAll | Ctrl+A | True | |||||
日期(&D) | tsmiDate | F5 | True | |||||
Text属性 | Name属性 | Check属性 | ||||||
格式(&O) | tsmiFormat | False | ||||||
自动换行(&W) | tsmiAuto | True | ||||||
字体(&F) | tsmiFont | False | ||||||
Text属性 | Name属性 | Checked属性 | ||||||
查看(&V) | tsmiView | False | ||||||
工具栏(&T) | tsmiToolStrip | True | ||||||
状态栏(&S) | tsmiStatusStrip | True | ||||||
Text属性 | Name属性 | |||||||
帮助(&H) | tsmiHelp | |||||||
关于记事本(&A) | tsmiAbout |
记事本大概界面
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace 真正的记事本
{
public partial class frmNotepad : Form
{
bool b = false;
bool s = true;
public frmNotepad()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void tssLbl1_Click(object sender, EventArgs e)
{
}
private void rtxtNotepad_TextChanged(object sender, EventArgs e)
{
s = false;
}
private void tsmiNew_Click(object sender, EventArgs e)
{
if (b == true || rtxtNotepad.Text.Trim() != "")
{
if (s == false)
{
string result;
result = MessageBox.Show("文件未保存,是否保存?","保存文件",MessageBoxButtons.YesNoCancel).ToString();
switch(result) {
case "Yes":
if (b == true)
{
rtxtNotepad.SaveFile(odlgNotepad.FileName);
}
else if (sdlgNotepad.ShowDialog() == DialogResult.OK) {
rtxtNotepad.SaveFile(sdlgNotepad.FileName);
}
s = true;
rtxtNotepad.Text = "";
break;
case "No":
b = false;
rtxtNotepad.Text = "";
break;
}
}
}
}
private void tsmiOpen_Click(object sender, EventArgs e)
{
if (b == true || rtxtNotepad.Text.Trim() != "")
{
if (s == false)
{
string result;
result = MessageBox.Show("文件尚未保存,是否保存?",
"保存文件", MessageBoxButtons.YesNoCancel).ToString();
switch (result)
{
case "Yes":
if (b == true)
{
rtxtNotepad.SaveFile(odlgNotepad.FileName);
}
else if (sdlgNotepad.ShowDialog() == DialogResult.OK)
{
rtxtNotepad.SaveFile(sdlgNotepad.FileName);
}
s = true;
break;
case "No":
b = false;
rtxtNotepad.Text = "";
break;
}
}
}
odlgNotepad.RestoreDirectory = true;
if ((odlgNotepad.ShowDialog() == DialogResult.OK) && odlgNotepad.FileName != "")
{
rtxtNotepad.LoadFile(odlgNotepad.FileName);
b = true;
}
s = true;
}
private void tsmiSave_Click(object sender, EventArgs e)
{
if (b == true && rtxtNotepad.Modified == true)
{
rtxtNotepad.SaveFile(odlgNotepad.FileName);
s = true;
}
else if (b == false && rtxtNotepad.Text.Trim() != "" &&
sdlgNotepad.ShowDialog() == DialogResult.OK)
{
rtxtNotepad.SaveFile(sdlgNotepad.FileName);
s = true;
b = true;
odlgNotepad.FileName = sdlgNotepad.FileName;
}
}
private void tsmiSaveAs_Click(object sender, EventArgs e)
{
if (sdlgNotepad.ShowDialog() == DialogResult.OK)
{
rtxtNotepad.SaveFile(sdlgNotepad.FileName);
s = true;
}
}
private void tsmiClose_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void 撤销UToolStripMenuItem_Click(object sender, EventArgs e)
{
rtxtNotepad.Undo();
}
private void tsmiCopy_Click(object sender, EventArgs e)
{
rtxtNotepad.Copy();
}
private void tsmiCut_Click(object sender, EventArgs e)
{
rtxtNotepad.Cut();
}
private void tsmiPaste_Click(object sender, EventArgs e)
{
rtxtNotepad.Paste();
}
private void tsmiSelectAll_Click(object sender, EventArgs e)
{
rtxtNotepad.SelectAll();
}
private void tsmiDate_Click(object sender, EventArgs e)
{
rtxtNotepad.AppendText(System.DateTime.Now.ToString());
}
private void tsmiAuto_Click(object sender, EventArgs e)
{
if (tsmiAuto.Checked == false)
{
tsmiAuto.Checked = true;
rtxtNotepad.WordWrap = true;
}
else
{
tsmiAuto.Checked = false;
rtxtNotepad.WordWrap = false;
}
}
private void tsmiFont_Click(object sender, EventArgs e)
{
fdlgNotepad.ShowColor = true;
if (fdlgNotepad.ShowDialog() == DialogResult.OK)
{
rtxtNotepad.SelectionColor = fdlgNotepad.Color;
rtxtNotepad.SelectionFont = fdlgNotepad.Font;
}
}
private void tsmiToolStrip_Click(object sender, EventArgs e)
{
Point point;
if (tsmiToolStrip.Checked == true)
{
point = new Point(0, 24);
tsmiToolStrip.Checked = false;
tlsNotepad.Visible = false;
rtxtNotepad.Location = point;
rtxtNotepad.Height += tlsNotepad.Height;
}
else
{
point = new Point(0, 49);
tsmiToolStrip.Checked = true;
tlsNotepad.Visible = true;
rtxtNotepad.Location = point;
rtxtNotepad.Height -= tlsNotepad.Height;
}
}
private void tsmiStatusStrip_Click(object sender, EventArgs e)
{
}
private void tsmiStatusStrip_Click_1(object sender, EventArgs e)
{
if (tsmiStatusStrip.Checked == true)
{
tsmiStatusStrip.Checked = false;
stsNotepad.Visible = false;
rtxtNotepad.Height += stsNotepad.Height;
}
else
{
tsmiStatusStrip.Checked = true;
stsNotepad.Visible = true;
rtxtNotepad.Height -= stsNotepad.Height;
}
}
private void tsmiAbout_Click(object sender, EventArgs e)
{
frmAbout ob_FrmAbout = new frmAbout();
ob_FrmAbout.Show();
}
private void tssLbl2_Click(object sender, EventArgs e)
{
}
private void tmrNotepad_Tick(object sender, EventArgs e)
{
tssLbl2.Text = System.DateTime.Now.ToString();
}
private void frmNotepad_SizeChanged(object sender, EventArgs e)
{
frmNotepad ob_frmNotepad = new frmNotepad();
tssLbl1.Width = this.Width / 2 - 12;
tssLbl2.Width = tssLbl1.Width;
}
private void stsNotepad_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
}
}
}
心得:
-
学习基本的C#编程知识 在开始编写记事本应用程序之前,我需要学习基本的C#编程知识,例如数据类型、循环语句、条件语句和面向对象编程概念等。这些基础知识对于编写任何类型的C#应用程序都是必要的。
-
掌握WinForms控件 掌握WinForms控件是编写记事本应用程序的关键。我需要了解如何使用文本框、标签、按钮、菜单和工具栏等控件,并将它们组合在一起创建一个完整的用户界面。
-
熟悉文本处理操作 一个记事本应用程序的核心是文本处理。因此,我需要熟悉如何读取和写入文本文件、搜索和替换文本、插入和删除文本等操作。这些操作是编写记事本应用程序的基础。
-
设计和美化用户界面 一个好的用户界面可以让我的应用程序更加吸引人并提高用户体验。因此,我需要考虑设计和美化我的用户界面。我可以使用图标、颜色、字体和布局等元素来增强用户界面的可读性和可用性。
-
测试和调试我的应用程序 在完成我的应用程序之后,测试和调试是非常重要的。我需要测试我的应用程序的各种功能,并确保它们可以正常工作。如果发现问题,我需要使用调试工具来解决它们。
总之,使用C#编写记事本WinForm是一个非常有趣和有挑战性的任务。通过学习基本的编程知识、掌握WinForms控件、熟悉文本处理操作、设计和美化用户界面以及测试和调试我的应用程序,我可以提高自己的编程技能和解决问题的能力。
源码地址:gitee