?? mainform.cs
字號:
//
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 + -