//新建文件的实现 private void NewFile() { if (Main_Text != null) { if (!_IsSaved)//判断已打开的文件是否保存,如果没有保存,则提示用户是否需要保存 { //弹出对话框,提示用户。 DialogResult dr = MessageBox.Show(this, "当前文本已修改,需要保存吗?", "提示信息", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question); if (dr == DialogResult.Yes)//如果用户选择同意保存,则执行保存函数 { SaveFile(); } else if (dr == DialogResult.Cancel)//如果用户选择不保存,则返回。 { return; } } } //如果未打开文件,则清除文本框的内容 Main_Text.Clear(); _FileName = ""; _IsSaved = true; this.Text = "新建文本文档"; SetRank(false); }
//复制功能的实现 private void Edit_Copy_Click(object sender, EventArgs e) { if (Main_Text.SelectedText != "") { Edit_Copy.Enabled = true; Main_Text.Copy(); SetRank(false); } }
//跳转至某一行数的实现 private void ToLine() { //RichTextBox中的GetFirstCharIndexFromLine可以获取指定行数的首个字符 Main_Text.SelectionStart = Main_Text.GetFirstCharIndexFromLine(GoTo.SetNum - 1); //使光标选定的字符字数为0; Main_Text.SelectionLength = 0; //在该处设置焦点 Main_Text.Focus(); //将光标移至焦点 Main_Text.ScrollToCaret(); }
//检测文本行、列数 private void SetRank(Boolean temp)//加入参数,判断是否按下了Enter键 { int totalline = Main_Text.GetLineFromCharIndex(Main_Text.TextLength) + 1; int index = Main_Text.GetFirstCharIndexOfCurrentLine(); //以下两行代码当用户按下Enter键时,无法正确判断行、列数。 //因此,需要加入判断条件。 int row = Main_Text.GetLineFromCharIndex(index) + 1; int col = Main_Text.SelectionStart - index + 1; if (temp == true)//如果按下Enter键,则行数+1,列数重新设置为1 { row = row + 1; col = 1; } StatusBar_Row.Text = " 第" + row + "行 "; StatusBar_Col.Text = " 第" + col + "列 "; NowRowNum = row; }
//全选功能的实现 private void Edit_All_Click(object sender, EventArgs e) { Main_Text.SelectAll(); }
//粘贴功能的实现 private void Edit_Paste_Click(object sender, EventArgs e) { Main_Text.Paste(); SetRank(false); }
//撤消功能的实现 private void Edit_Undo_Click(object sender, EventArgs e) { Main_Text.Undo(); SetRank(false); }