(一).说明

        功能类似Windows 操作系统自带的记事本.  一个WinForm记事本程序(包含主/下拉/弹出

        菜单/打开保存对话框等控件用法以及记事本菜单事件的具体代码)

(二).图片示例

一个WinForm记事本程序_Windows

一个WinForm记事本程序_Click_02

(三).代码

using System;
 using System.Drawing;
 using System.Collections;
 using System.ComponentModel;
 using System.Windows.Forms;
 using System.IO;
 using System.Drawing.Printing;
 using System.Data;namespace 记事本
 {
  /// <summary>
  /// Form1 的摘要说明。
  /// </summary>
  public class FormMain : System.Windows.Forms.Form
  {
   private System.Windows.Forms.TextBox textBoxEdit;
   /// <summary>
   /// 必需的设计器变量。
   /// </summary>
   private System.ComponentModel.Container components = null;
   private System.Windows.Forms.MainMenu mainMenu1;
   private System.Windows.Forms.MenuItem menuItem8;
   private System.Windows.Forms.MenuItem menuItem11;
   private System.Windows.Forms.MenuItem menuItem14;
   private System.Windows.Forms.MenuItem menuItem19;
   private System.Windows.Forms.MenuItem menuItem22;
   private System.Windows.Forms.MenuItem menuItemFile;
   private System.Windows.Forms.MenuItem menuItemEdit;
   private System.Windows.Forms.MenuItem menuItemFormat;
   private System.Windows.Forms.MenuItem menuItemNew;
   private System.Windows.Forms.MenuItem menuItemOpen;
   private System.Windows.Forms.MenuItem menuItemSave;
   private System.Windows.Forms.MenuItem menuItemSaveAs;
   private System.Windows.Forms.MenuItem menuItemPageSet;
   private System.Windows.Forms.MenuItem menuItemPrint;
   private System.Windows.Forms.MenuItem menuItemExit;
   private System.Windows.Forms.MenuItem menuItemUndo;
   private System.Windows.Forms.MenuItem menuItemCut;
   private System.Windows.Forms.MenuItem menuItemCopy;
   private System.Windows.Forms.MenuItem menuItemPaste;
   private System.Windows.Forms.MenuItem menuItemDel;
   private System.Windows.Forms.MenuItem menuItemSelAll;
   private System.Windows.Forms.MenuItem menuItemWordWrap;
   private System.Windows.Forms.MenuItem menuItemFont;
   private System.Windows.Forms.MenuItem menuItemColor;
   const int MaxLenght=2000000;
         
   private string currentFileName;
   private System.Drawing.Printing.PrintDocument printDocument=new PrintDocument();
   private bool needToSave;
   public FormMain()
   {
    //
    // Windows 窗体设计器支持所必需的
    //
    InitializeComponent();   //
    // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
    //
   }  /// <summary>
   /// 清理所有正在使用的资源。
   /// </summary>
   protected override void Dispose( bool disposing )
   {
    if( disposing )
    {
     if (components != null) 
     {
      components.Dispose();
     }
    }
    base.Dispose( disposing );
   }  #region Windows Form Designer generated code
   /// <summary>
   /// 设计器支持所需的方法 - 不要使用代码编辑器修改
   /// 此方法的内容。
   /// </summary>
   private void InitializeComponent()
   {
    this.textBoxEdit = new System.Windows.Forms.TextBox();
    this.mainMenu1 = new System.Windows.Forms.MainMenu();
    this.menuItemFile = new System.Windows.Forms.MenuItem();
    this.menuItemNew = new System.Windows.Forms.MenuItem();
    this.menuItemOpen = new System.Windows.Forms.MenuItem();
    this.menuItemSave = new System.Windows.Forms.MenuItem();
    this.menuItemSaveAs = new System.Windows.Forms.MenuItem();
    this.menuItem8 = new System.Windows.Forms.MenuItem();
    this.menuItemPageSet = new System.Windows.Forms.MenuItem();
    this.menuItemPrint = new System.Windows.Forms.MenuItem();
    this.menuItem11 = new System.Windows.Forms.MenuItem();
    this.menuItemExit = new System.Windows.Forms.MenuItem();
    this.menuItemEdit = new System.Windows.Forms.MenuItem();
    this.menuItemUndo = new System.Windows.Forms.MenuItem();
    this.menuItem14 = new System.Windows.Forms.MenuItem();
    this.menuItemCut = new System.Windows.Forms.MenuItem();
    this.menuItemCopy = new System.Windows.Forms.MenuItem();
    this.menuItemPaste = new System.Windows.Forms.MenuItem();
    this.menuItemDel = new System.Windows.Forms.MenuItem();
    this.menuItem19 = new System.Windows.Forms.MenuItem();
    this.menuItemSelAll = new System.Windows.Forms.MenuItem();
    this.menuItemFormat = new System.Windows.Forms.MenuItem();
    this.menuItemWordWrap = new System.Windows.Forms.MenuItem();
    this.menuItem22 = new System.Windows.Forms.MenuItem();
    this.menuItemFont = new System.Windows.Forms.MenuItem();
    this.menuItemColor = new System.Windows.Forms.MenuItem();
    this.SuspendLayout();
    // 
    // textBoxEdit
    // 
    this.textBoxEdit.AcceptsTab = true;
    this.textBoxEdit.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(192)), ((System.Byte)(192)), ((System.Byte)(255)));
    this.textBoxEdit.Cursor = System.Windows.Forms.Cursors.Arrow;
    this.textBoxEdit.Dock = System.Windows.Forms.DockStyle.Fill;
    this.textBoxEdit.Location = new System.Drawing.Point(0, 0);
    this.textBoxEdit.MaxLength = 2000000;
    this.textBoxEdit.Multiline = true;
     = "textBoxEdit";
    this.textBoxEdit.ScrollBars = System.Windows.Forms.ScrollBars.Both;
    this.textBoxEdit.Size = new System.Drawing.Size(442, 393);
    this.textBoxEdit.TabIndex = 0;
    this.textBoxEdit.Text = "Hello ChengKing !";
    this.textBoxEdit.WordWrap = false;
    this.textBoxEdit.TextChanged += new System.EventHandler(this.textBoxEdit_TextChanged);
    // 
    // mainMenu1
    // 
    this.mainMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
                        this.menuItemFile,
                        this.menuItemEdit,
                        this.menuItemFormat});
    // 
    // menuItemFile
    // 
    this.menuItemFile.Index = 0;
    this.menuItemFile.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
                        this.menuItemNew,
                        this.menuItemOpen,
                        this.menuItemSave,
                        this.menuItemSaveAs,
                        this.menuItem8,
                        this.menuItemPageSet,
                        this.menuItemPrint,
                        this.menuItem11,
                        this.menuItemExit});
    this.menuItemFile.Text = "文件(&F)";
    // 
    // menuItemNew
    // 
    this.menuItemNew.Index = 0;
    this.menuItemNew.Shortcut = System.Windows.Forms.Shortcut.CtrlN;
    this.menuItemNew.Text = "新建(&N)";
    this.menuItemNew.Click += new System.EventHandler(this.menuItemNew_Click);
    // 
    // menuItemOpen
    // 
    this.menuItemOpen.Index = 1;
    this.menuItemOpen.Shortcut = System.Windows.Forms.Shortcut.CtrlO;
    this.menuItemOpen.Text = "打开(O)...";
    this.menuItemOpen.Click += new System.EventHandler(this.menuItem5_Click);
    // 
    // menuItemSave
    // 
    this.menuItemSave.Index = 2;
    this.menuItemSave.Shortcut = System.Windows.Forms.Shortcut.CtrlS;
    this.menuItemSave.Text = "保存(&S)";
    this.menuItemSave.Click += new System.EventHandler(this.menuItemSave_Click);
    // 
    // menuItemSaveAs
    // 
    this.menuItemSaveAs.Index = 3;
    this.menuItemSaveAs.Text = "另存为(A)...";
    this.menuItemSaveAs.Click += new System.EventHandler(this.menuItemSaveAs_Click);
    // 
    // menuItem8
    // 
    this.menuItem8.Index = 4;
    this.menuItem8.Text = "-";
    // 
    // menuItemPageSet
    // 
    this.menuItemPageSet.Index = 5;
    this.menuItemPageSet.Text = "页面设置(U)...";
    this.menuItemPageSet.Click += new System.EventHandler(this.menuItemPageSet_Click);
    // 
    // menuItemPrint
    // 
    this.menuItemPrint.Index = 6;
    this.menuItemPrint.Shortcut = System.Windows.Forms.Shortcut.CtrlP;
    this.menuItemPrint.Text = "打印(&P)";
    this.menuItemPrint.Click += new System.EventHandler(this.menuItemPrint_Click);
    // 
    // menuItem11
    // 
    this.menuItem11.Index = 7;
    this.menuItem11.Text = "-";
    // 
    // menuItemExit
    // 
    this.menuItemExit.Index = 8;
    this.menuItemExit.Text = "退出(&X)";
    this.menuItemExit.Click += new System.EventHandler(this.menuItemExit_Click);
    // 
    // menuItemEdit
    // 
    this.menuItemEdit.Index = 1;
    this.menuItemEdit.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
                        this.menuItemUndo,
                        this.menuItem14,
                        this.menuItemCut,
                        this.menuItemCopy,
                        this.menuItemPaste,
                        this.menuItemDel,
                        this.menuItem19,
                        this.menuItemSelAll});
    this.menuItemEdit.Text = "编辑(&E)";
    this.menuItemEdit.Popup += new System.EventHandler(this.menuItemEdit_Popup);
    // 
    // menuItemUndo
    // 
    this.menuItemUndo.Index = 0;
    this.menuItemUndo.Shortcut = System.Windows.Forms.Shortcut.CtrlZ;
    this.menuItemUndo.Text = "撤消(&U)";
    this.menuItemUndo.Click += new System.EventHandler(this.menuItemUndo_Click);
    // 
    // menuItem14
    // 
    this.menuItem14.Index = 1;
    this.menuItem14.Text = "-";
    // 
    // menuItemCut
    // 
    this.menuItemCut.Index = 2;
    this.menuItemCut.Shortcut = System.Windows.Forms.Shortcut.CtrlX;
    this.menuItemCut.Text = "剪切(&T)";
    this.menuItemCut.Click += new System.EventHandler(this.menuItemCut_Click);
    // 
    // menuItemCopy
    // 
    this.menuItemCopy.Index = 3;
    this.menuItemCopy.Shortcut = System.Windows.Forms.Shortcut.CtrlC;
    this.menuItemCopy.Text = "复制(&C)";
    this.menuItemCopy.Click += new System.EventHandler(this.menuItemCopy_Click);
    // 
    // menuItemPaste
    // 
    this.menuItemPaste.Index = 4;
    this.menuItemPaste.Shortcut = System.Windows.Forms.Shortcut.CtrlP;
    this.menuItemPaste.Text = "粘贴(&P)";
    this.menuItemPaste.Click += new System.EventHandler(this.menuItemPaste_Click);
    // 
    // menuItemDel
    // 
    this.menuItemDel.Index = 5;
    this.menuItemDel.Shortcut = System.Windows.Forms.Shortcut.Del;
    this.menuItemDel.Text = "删除(&L)";
    this.menuItemDel.Click += new System.EventHandler(this.menuItemDel_Click);
    // 
    // menuItem19
    // 
    this.menuItem19.Index = 6;
    this.menuItem19.Text = "-";
    // 
    // menuItemSelAll
    // 
    this.menuItemSelAll.Index = 7;
    this.menuItemSelAll.Shortcut = System.Windows.Forms.Shortcut.CtrlA;
    this.menuItemSelAll.Text = "全选(&A)";
    this.menuItemSelAll.Click += new System.EventHandler(this.menuItemSelAll_Click);
    // 
    // menuItemFormat
    // 
    this.menuItemFormat.Index = 2;
    this.menuItemFormat.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
                          this.menuItemWordWrap,
                          this.menuItem22,
                          this.menuItemFont,
                          this.menuItemColor});
    this.menuItemFormat.Text = "格式(&O)";
    // 
    // menuItemWordWrap
    // 
    this.menuItemWordWrap.Index = 0;
    this.menuItemWordWrap.Text = "自动换行(&W)";
    // 
    // menuItem22
    // 
    this.menuItem22.Index = 1;
    this.menuItem22.Text = "-";
    // 
    // menuItemFont
    // 
    this.menuItemFont.Index = 2;
    this.menuItemFont.Text = "字体(&F)...";
    this.menuItemFont.Click += new System.EventHandler(this.menuItemFont_Click);
    // 
    // menuItemColor
    // 
    this.menuItemColor.Index = 3;
    this.menuItemColor.Text = "背景颜色(&C)...";
    this.menuItemColor.Click += new System.EventHandler(this.menuItemColor_Click);
    // 
    // FormMain
    // 
    this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
    this.ClientSize = new System.Drawing.Size(442, 393);
    this.Controls.Add(this.textBoxEdit);
    this.Menu = this.mainMenu1;
     = "FormMain";
    this.Text = "ChengKing Rote";
    this.Closing += new System.ComponentModel.CancelEventHandler(this.FormMain_Closing);
    this.Load += new System.EventHandler(this.FormMain_Load);
    this.ResumeLayout(false);  }
   #endregion  /// <summary>
   /// 应用程序的主入口点。
   /// </summary>
   [STAThread]
   static void Main() 
   {
    Application.Run(new FormMain());
   }  private void FormMain_Load(object sender, System.EventArgs e)
   {
    //textBoxEdit.MaxLength=MaxLength;
    //textBoxEdit.Multiline=t
   }  private void textBoxEdit_TextChanged(object sender, System.EventArgs e)
   {
    needToSave=true;
   }  private void menuItem5_Click(object sender, System.EventArgs e)
   {
    if(needToSave==true)
    {
     DialogResult result=MessageBox.Show("文本内容已经改变,需要保存吗?","保存文件",MessageBoxButtons.YesNoCancel,MessageBoxIcon.Question);
     if(result==DialogResult.Cancel)
     {
      return;
     }
     if(result==DialogResult.Yes)
     {
      menuItemSave_Click(sender,e);
      needToSave=false;
     }
    }
    string file=GetOpenFile();
    if(file==null)
    {
     return;
    }
    else
    {
     currentFileName=file;
     OpenFile();
    }
   }
   private void OpenFile()
   {
    try
    {
     FileInfo f=new FileInfo(currentFileName);
     StreamReader reader=f.OpenText();
     textBoxEdit.Text=reader.ReadToEnd();
     reader.Close();
     this.Text="文本编辑--"+;
    }
    catch(Exception e)
    {
     MessageBox.Show(e.Message);
    }
   }
   private string GetOpenFile()
   {
    OpenFileDialog openFile=new OpenFileDialog();
    openFile.Title="打开文本文件";
    openFile.CheckFileExists=true;
    openFile.CheckPathExists=true;
    openFile.AddExtension=true;
    openFile.Multiselect=false;
    openFile.Filter="文本文件 (*.txt)|*.txt|所有文件 (*.*)|*.*";
    if(openFile.ShowDialog()==DialogResult.OK)
    {
     return openFile.FileName;
    }
    else
    {
     return null;
    }
   }
   private void menuItemExit_Click(object sender, System.EventArgs e)
   {
    this.Close();
   }  private void menuItemUndo_Click(object sender, System.EventArgs e)
   {
    if(textBoxEdit.CanUndo==true)
    {
     textBoxEdit.Undo();
     textBoxEdit.ClearUndo();
    }
   }  private void menuItemCut_Click(object sender, System.EventArgs e)
   {
    if(textBoxEdit.SelectedText!="")
    {
     textBoxEdit.Cut();
    }
   }  private void menuItemCopy_Click(object sender, System.EventArgs e)
   {
    if(textBoxEdit.SelectionLength>0)
    {
     textBoxEdit.Copy();
    }
   }  private void menuItemPaste_Click(object sender, System.EventArgs e)
   {
    if(Clipboard.GetDataObject().GetDataPresent(DataFormats.Text)==true)
    {
     if(textBoxEdit.SelectionLength>0)
     {
      DialogResult result;
      result=MessageBox.Show("你想覆盖掉选择的文本吗?","覆盖确认",MessageBoxButtons.YesNo);
      if(result==)
      {
       textBoxEdit.SelectionStart=textBoxEdit.SelectionStart+textBoxEdit.SelectionLength;
      } 
     }
     textBoxEdit.Paste();   
    }
   }  private void menuItemDel_Click(object sender, System.EventArgs e)
   {
    textBoxEdit.SelectedText.Remove(0,textBoxEdit.SelectionLength);
    textBoxEdit.SelectedText="";
   }  private void menuItemSelAll_Click(object sender, System.EventArgs e)
   {
    textBoxEdit.SelectAll();
   }  private void menuItemEdit_Popup(object sender, System.EventArgs e)
   {
    if(Clipboard.GetDataObject().GetDataPresent(DataFormats.Text))
    {
     menuItemPaste.Enabled=true;
    }
    else 
    {
     menuItemPaste.Enabled=false;
    }
    if(textBoxEdit.SelectionLength>0)
    {
     menuItemCopy.Enabled=true;
     menuItemCut.Enabled=true;
     menuItemDel.Enabled=true;
    }
    else
    {
     menuItemCopy.Enabled=false;
     menuItemCut.Enabled=false;
     menuItemDel.Enabled=false;
    }
    if(textBoxEdit.CanUndo==true)
    {
     menuItemUndo.Enabled=true;
    }
    else
    {
     menuItemUndo.Enabled=false;
    }
   }
   private void menuItemSave_Click(object sender, System.EventArgs e)
   {
    if(currentFileName==null)
    {
     menuItemSaveAs_Click(sender,e);
    }
    else
    {
     SaveFile(textBoxEdit.Text);
    }
    needToSave=false;
   }  private void menuItemSaveAs_Click(object sender, System.EventArgs e)
   {
    string file=GetSaveFile();
    if(file==null)
    {
     return;
    }
    else
    {
     currentFileName=file;
     SaveFile(textBoxEdit.Text);
     FileInfo f=new FileInfo(currentFileName);
     this.Text="文本编辑--"+;
     needToSave=false;
    }
   } 
   private void SaveFile(string str)
   {
    try
    {
     StreamWriter writer=new StreamWriter(currentFileName);
     writer.Write(str);
     writer.Close();
    }
    catch(Exception e)
    {
     MessageBox.Show(e.Message);
    }
   }
   private string GetSaveFile()
   {
    SaveFileDialog saveFile=new SaveFileDialog();
    saveFile.Title="保存文本文件";
             saveFile.OverwritePrompt=true;
    saveFile.CreatePrompt=true;
    saveFile.AddExtension=true;
    saveFile.Filter="文本文件 (*.txt)|*.txt|所有文件 (*.*)|*.*";
    if(saveFile.ShowDialog()==DialogResult.OK)
    {
     return saveFile.FileName;
    }
    else
    {
     return null;
    }
   }  private void menuItemFont_Click(object sender, System.EventArgs e)
   {
    FontDialog fontDialog=new FontDialog();
    fontDialog.ShowColor=true;
    fontDialog.AllowScriptChange=true;
    fontDialog.AllowVectorFonts=true;
    fontDialog.ShowEffects=true;
    if(fontDialog.ShowDialog()==DialogResult.OK)
    {
     textBoxEdit.Font=fontDialog.Font;
     textBoxEdit.ForeColor=fontDialog.Color;
    }
   }  private void menuItemColor_Click(object sender, System.EventArgs e)
   {
    ColorDialog colorDialog=new ColorDialog();
    colorDialog.AllowFullOpen=true;
    colorDialog.AnyColor=true;
    colorDialog.FullOpen=true;
    if(colorDialog.ShowDialog()==DialogResult.OK)
    {
     textBoxEdit.BackColor=colorDialog.Color;
    }
   }  private void menuItemPrint_Click(object sender, System.EventArgs e)
   {
    PrintDialog printDialog=new PrintDialog();
    printDialog.Document=printDocument;
    if(printDialog.ShowDialog()==DialogResult.OK)
    {
     try
     {
      printDocument.Print();
     }
     catch(Exception e2)
     {
      MessageBox.Show(e2.Message);
     }
    }
   }
   private void printDocument_PrintPage(object sender,PrintPageEventArgs e)
   {
    float linesPerPage=0;
    float yPos=0;
    int count=0;
    float leftMargin=e.MarginBounds.Left;
    float topMargin=;
    string line=null;
             StreamReader streamToPrint=new StreamReader(currentFileName);
    SolidBrush brush=new SolidBrush(textBoxEdit.ForeColor);
    linesPerPage=e.MarginBounds.Height/textBoxEdit.Font.GetHeight(e.Graphics);
    while(count<linesPerPage&&((line=streamToPrint.ReadLine())!=null))
    {
     yPos=topMargin+(count*textBoxEdit.Font.GetHeight(e.Graphics));
     e.Graphics.DrawString(line,textBoxEdit.Font,brush,leftMargin,yPos,new StringFormat());
     count++;
    }
    if(line!=null)
    {
     e.HasMorePages=true;
    }
    else
    {
     e.HasMorePages=false;
    }
   }  private void menuItemPageSet_Click(object sender, System.EventArgs e)
   {
    PageSetupDialog pageSet=new PageSetupDialog();
    pageSet.Document=printDocument;
    pageSet.ShowDialog();
   }  private void FormMain_Closing(object sender, System.ComponentModel.CancelEventArgs e)
   {
    if(needToSave==true)
    {
     DialogResult result=MessageBox.Show("文本内容已经改变,需要保存吗?","保存文件",MessageBoxButtons.YesNoCancel,MessageBoxIcon.Question);
     if(result==DialogResult.Cancel)
     {
      e.Cancel=true;
      return;
     }
     if(result==DialogResult.Yes)
     {
      menuItemSave_Click(sender,e);
      e.Cancel=false;
      return;
     }
    }
   }  private void menuItemNew_Click(object sender, System.EventArgs e)
   {
    if(needToSave==true)
    {
     DialogResult result=MessageBox.Show("文本内容已经改变,需要保存吗?","保存文件",MessageBoxButtons.YesNoCancel,MessageBoxIcon.Question);
     switch(result)
     {
      case DialogResult.Yes:
      {
       menuItemSave_Click(sender,e);
       textBoxEdit.Clear();
       this.Text="文本编辑--新建文本";
       needToSave=false;
       break;
      }
      case :
      {
       textBoxEdit.Clear();
       this.Text="文本编辑--新建文本";
       needToSave=false;
       break;
      }
      case DialogResult.Cancel:
      {
       break;
      }
     }
    }
    else
    {
     textBoxEdit.Clear();
     this.Text="文本编辑新建文本";
    }
   } }
 }