⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainform.cs

📁 一个简单的文本编辑器程序,功能和windows记事本类似
💻 CS
📖 第 1 页 / 共 2 页
字号:
			// 
			this.statusBarSaveTime.AutoSize = System.Windows.Forms.StatusBarPanelAutoSize.Spring;
			this.statusBarSaveTime.ToolTipText = "请及时保存您的文档";
			this.statusBarSaveTime.Width = 392;
			// 
			// dlg_openFile
			// 
			this.dlg_openFile.Filter = "RTF文件(*.rtf)|*.rtf|文本文件(*.txt)|*.txt|Unicode文本(*.uni)|*.uni|所有文件(*.*)|*.*";
			// 
			// dlg_saveFile
			// 
			this.dlg_saveFile.DefaultExt = "*.*";
			this.dlg_saveFile.Filter = "RTF文件(*.rtf)|*.rtf|文本文件(*.txt)|*.txt|Unicode文本(*.uni)|*.uni";
			// 
			// dlg_font
			// 
			this.dlg_font.ShowColor = true;
			// 
			// MainForm
			// 
			this.AllowDrop = true;
			this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
			this.ClientSize = new System.Drawing.Size(408, 281);
			this.Controls.Add(this.mainStatus);
			this.Controls.Add(this.txtMain);
			this.Menu = this.mainMenu;
			this.Name = "MainForm";
			this.Text = "文本编辑器";
			this.Closing += new System.ComponentModel.CancelEventHandler(this.MainForm_Closing);
			this.SizeChanged += new System.EventHandler(this.MainForm_SizeChanged);
			this.Load += new System.EventHandler(this.MainForm_Load);
			this.DragDrop += new System.Windows.Forms.DragEventHandler(this.MainForm_DragDrop);
			((System.ComponentModel.ISupportInitialize)(this.statusBarSaveTime)).EndInit();
			this.ResumeLayout(false);

		}
		#endregion

		/// <summary>
		/// 应用程序的主入口点。
		/// </summary>
		[STAThread]
		static void Main() 
		{
			Application.Run(new MainForm());
		}

		private void MainForm_Load(object sender, System.EventArgs e)
		{
			this.txtMain.Left = 0;
			this.txtMain.Top = 0;
			this.txtMain.Width = this.ClientRectangle.Width;
			this.txtMain.Height = this.ClientRectangle.Height;

			this.statusBarSaveTime.Text = "就绪";

			this.IsSaved = false;
			this.IsChanged = false;
		}

		private void MainForm_SizeChanged(object sender, System.EventArgs e)
		{
			this.txtMain.Left = 0;
			this.txtMain.Top = 0;
			this.txtMain.Width = this.ClientRectangle.Width;
			this.txtMain.Height = this.ClientRectangle.Height;
		}

		private void menu_FileNew_Click(object sender, System.EventArgs e)
		{
			AlertSaveFile(); // 提示用户保存文件
		
			this.txtMain.Clear();
			this.IsSaved = false;
			this.IsChanged = false;
			this.Text = "无标题";
		}

		private void menu_FileOpen_Click(object sender, System.EventArgs e)
		{
			// 打开文档
			if(this.dlg_openFile.ShowDialog() != DialogResult.Cancel)
			{
				OpenFile(this.dlg_openFile.FileName,null,false);
				this.FileName = this.dlg_openFile.FileName;
				this.IsSaved = true;
				this.IsChanged = false;
				this.Text = this.dlg_openFile.FileName;
				this.statusBarSaveTime.Text = "文件打开于" + DateTime.Now.ToShortTimeString();
			}
		}

		private void menu_FileSave_Click(object sender, System.EventArgs e)
		{
			if(!this.IsChanged) // 如果文档未改动,则返回
			{
				return;
			}
			if(this.IsSaved) //如果文档经过改动并且保存过
			{
				FileInfo finfo = new FileInfo(this.FileName);
				if(finfo.Extension == ".rtf")// 判断文件格式
				{
					this.txtMain.SaveFile(finfo.FullName,RichTextBoxStreamType.RichText);
				}
				else if(finfo.Extension == ".txt")
				{
					this.txtMain.SaveFile(finfo.FullName,RichTextBoxStreamType.PlainText);
				}
				else if(finfo.Extension == ".uni")
				{
					this.txtMain.SaveFile(finfo.FullName,RichTextBoxStreamType.UnicodePlainText);
				}
				this.IsChanged = false;
				this.Text = this.FileName;
				this.statusBarSaveTime.Text = "文件保存于 " + DateTime.Now.ToShortTimeString();
			}
			else // 如果文档经过改动并且未经过保存则转到另存为菜单执行
			{
				menu_FileSaveAs_Click(sender,e);
			}
		}

		private void menu_FileSaveAs_Click(object sender, System.EventArgs e)
		{
			// 保存文档
			if(this.dlg_saveFile.ShowDialog() != DialogResult.Cancel)
			{
				FileInfo finfo = new FileInfo(this.dlg_saveFile.FileName);
				if(finfo.Extension == ".rtf")
				{
					this.txtMain.SaveFile(finfo.FullName,RichTextBoxStreamType.RichText);
				}
				else
				{
					this.txtMain.SaveFile(finfo.FullName,RichTextBoxStreamType.PlainText);
				}
				this.FileName = this.dlg_saveFile.FileName;

				this.IsSaved = true;
				this.IsChanged = false;
				this.Text = this.FileName;
				this.statusBarSaveTime.Text = "文件保存于 " + DateTime.Now.ToShortTimeString();
			}
		}

		private void MainForm_Closing(object sender, System.ComponentModel.CancelEventArgs e)
		{
		}

		private void menu_FileExit_Click(object sender, System.EventArgs e)
		{
			this.Close();
		}

		private void menu_HelpAbout_Click(object sender, System.EventArgs e)
		{
			MessageBox.Show(this,
				"文本编辑器" + Environment.NewLine + Environment.NewLine +
				"由无名工作室开发,由本工作室荣誉出品" +
				Environment.NewLine + Environment.NewLine + "版本1.0",
				"文本编辑器",MessageBoxButtons.OK,
				MessageBoxIcon.Information);
		}
		private bool AlertSaveFile() // 提示用户保存文件
		{
			if(IsChanged) // 表示文档有改动并且未保存
			{
				DialogResult result =
					MessageBox.Show(this,"文档做了改动,要保存改动吗?",
					"文本编辑器",MessageBoxButtons.YesNoCancel,
					MessageBoxIcon.Warning);
				// 保存文档
				if(result == DialogResult.Yes) 
				{
					if(this.IsSaved)
					{
						this.txtMain.SaveFile(FileName);
					}
					else
					{
						menu_FileSaveAs_Click(null,null);
					}
				}// 不保存文档
				else if(result == DialogResult.No)
				{
				}// 取消
				else
				{
					return false; // 表示点击取消
				}
			}
			return true; // 表示点击其他
		}
		private void OpenFile(string fileName,
			System.Text.Encoding encoding,bool SetEncoding)
			// 用于打开文件和改变文本编码
		{
			FileInfo finfo = new FileInfo(fileName);
			if(encoding == null) // 如果不需要设置编码,则设置编码为GB2312
			{
				this.TextEncoding = Encoding.GetEncoding("GB2312");
			}
			else // 否则设置为指定的编码
			{
				this.TextEncoding = encoding;
			}
			if(SetEncoding) // 如果需要设置编码并且编码不为空
			{

				if(encoding != null) 
				{
					FileStream fs = finfo.Open(FileMode.OpenOrCreate,
						FileAccess.ReadWrite,
						FileShare.ReadWrite);// 打开文件并将内容读入控件
					StreamReader sr = new StreamReader(fs,encoding);
					this.txtMain.Text = sr.ReadToEnd();
					sr.Close();
					fs.Close();
					return;
				}
			}
			// rtf文件
			if(finfo.Extension == ".rtf")
			{
				this.txtMain.LoadFile(finfo.FullName,RichTextBoxStreamType.RichText);
			}// 文本文件
			else if(finfo.Extension == ".txt")
			{
				this.txtMain.LoadFile(finfo.FullName,RichTextBoxStreamType.PlainText);
			}// Unicode Text
			else if(finfo.Extension == ".uni")
			{
				this.txtMain.LoadFile(finfo.FullName,RichTextBoxStreamType.UnicodePlainText);
			}// 其他文件
			else
			{
				FileStream fs = finfo.Open(FileMode.OpenOrCreate,FileAccess.ReadWrite,
					FileShare.ReadWrite);

				// 确认文件编码
				EncodingSelect sel = new EncodingSelect();
				sel.ShowDialog();
				StreamReader sr = new StreamReader(fs,sel.Encode);
				this.TextEncoding = sel.Encode;
				this.txtMain.Text = sr.ReadToEnd();
				sr.Close();
				fs.Close();
			}
			
			// 标示当前编码
			if(this.TextEncoding.BodyName == "gb2312")
			{
				this.menu_EncodeGB.Checked = true;
			}
			if(this.TextEncoding.BodyName == "ASCII")
			{
				this.menu_EncodeASCII.Checked = true;
			}
			if(this.TextEncoding.BodyName == "Unicode")
			{
				this.menu_EncodeUni.Checked = true;
			}
			if(this.TextEncoding.BodyName == "UTF7")
			{
				this.menu_EncodeUTF7.Checked = true;
			}
			if(this.TextEncoding.BodyName == "UTF8")
			{
				this.menu_EncodeUTF8.Checked = true;
			}
		}

		private void menu_EncodeGB_Click(object sender, System.EventArgs e)
		{
			OpenFile(this.FileName,System.Text.Encoding.GetEncoding("GB2312"),true);
			this.menu_EncodeGB.Checked = true;
			this.menu_EncodeASCII.Checked = false;
			this.menu_EncodeUTF7.Checked = false;
			this.menu_EncodeUTF8.Checked = false;
			this.menu_EncodeUni.Checked = false;
		}

		private void menu_EncodeASCII_Click(object sender, System.EventArgs e)
		{
			OpenFile(this.FileName,System.Text.Encoding.ASCII,true);
			this.menu_EncodeGB.Checked = false;
			this.menu_EncodeASCII.Checked = true;
			this.menu_EncodeUTF7.Checked = false;
			this.menu_EncodeUTF8.Checked = false;
			this.menu_EncodeUni.Checked = false;
		}

		private void menu_EncodeUTF7_Click(object sender, System.EventArgs e)
		{
			OpenFile(this.FileName,System.Text.Encoding.UTF7,true);
			this.menu_EncodeGB.Checked = false;
			this.menu_EncodeASCII.Checked = false;
			this.menu_EncodeUTF7.Checked = true;
			this.menu_EncodeUTF8.Checked = false;
			this.menu_EncodeUni.Checked = false;
		}

		private void menu_EncodeUTF8_Click(object sender, System.EventArgs e)
		{
			OpenFile(this.FileName,System.Text.Encoding.UTF8,true);
			this.menu_EncodeGB.Checked = false;
			this.menu_EncodeASCII.Checked = false;
			this.menu_EncodeUTF7.Checked = false;
			this.menu_EncodeUTF8.Checked = true;
			this.menu_EncodeUni.Checked = false;
		}

		private void menu_EncodeUni_Click(object sender, System.EventArgs e)
		{
			OpenFile(this.FileName,System.Text.Encoding.Unicode,true);
			this.menu_EncodeGB.Checked = false;
			this.menu_EncodeASCII.Checked = false;
			this.menu_EncodeUTF7.Checked = false;
			this.menu_EncodeUTF8.Checked = false;
			this.menu_EncodeUni.Checked = true;
		}

		private void menu_FormatFont_Click(object sender, System.EventArgs e)
		{
			if(this.dlg_font.ShowDialog() == DialogResult.OK)
			{
				this.txtMain.SelectionFont = this.dlg_font.Font;
				this.txtMain.SelectionColor = this.dlg_font.Color;
			}
		}

		private void txtMain_TextChanged(object sender, System.EventArgs e)
		{
			this.IsChanged = true;
			this.Text = this.FileName + "*";
		}

		private void menu_EditUndo_Click(object sender, System.EventArgs e)
		{
			if(this.txtMain.CanUndo)
			{
				this.txtMain.Undo();
			}
		}

		private void menu_EditRedo_Click(object sender, System.EventArgs e)
		{
			if(this.txtMain.CanRedo)
			{
				this.txtMain.Redo();
			}
		}

		private void menu_EditCut_Click(object sender, System.EventArgs e)
		{
			this.txtMain.Cut();
		}

		private void menu_EditCopy_Click(object sender, System.EventArgs e)
		{
			this.txtMain.Copy();
		}

		private void menu_EditPaste_Click(object sender, System.EventArgs e)
		{
			this.txtMain.Paste();
		}

		private void menu_EditDel_Click(object sender, System.EventArgs e)
		{
			this.txtMain.SelectedText = "";
		}

		private void menu_EditSelAll_Click(object sender, System.EventArgs e)
		{
			this.txtMain.SelectAll();
		}

		private void menu_EditFind_Click(object sender, System.EventArgs e)
		{
			this.searchForm = new SearchAndReplace(this);
			this.searchForm.Show();
			this.AddOwnedForm(this.searchForm);
		}

		private void MainForm_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
		{
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -