爲了弄這個記事本用了我好久時間,各種上網查資料,目前實現功能不多,有新建,打開,保存,另存爲,查找,查找下一個等,應該目前是網上最全面的吧,雖然沒有完全實現,廢話不多說,直接開始
使用控件截圖
form1截圖
form2截圖
form3截圖
form5截圖
form代碼:
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;
using System.IO;
using System.Diagnostics;
namespace windows_txt
{
public partial class Form1 : Form
{
public int a = 0;
public int i = -1;
public int k = 0;
public int j = 0;
public int b = 0;
public int c = 0;
public int d = 0;
public int f = 0;
public string rtb = "";
private FontDialog fontDialog1 = new FontDialog();
private OpenFileDialog spenFileDialog1 = new OpenFileDialog();
//private SaveFileDialog saveFileDialog1 = new SaveFileDialog();
public Form1()
{
InitializeComponent();
}
[System.Runtime.InteropServices.DllImport("User32.DLL")]
public static extern int SendMessage(IntPtr hWnd, uint Msg, int wParam, int iParam);
private const int EM_LINEFROMCHAR = 0xC9;
private const int EM_LINEINDEX = 0xBB;
private Point GetCursorPos(RichTextBox richtextBox)
{
Point cursorPos = new Point(0, 0);
int x, y;
y = SendMessage(richtextBox.Handle, EM_LINEFROMCHAR, richtextBox.SelectionStart, 0);
x = richtextBox.SelectionStart - SendMessage(richtextBox.Handle, EM_LINEINDEX, y, 0);
cursorPos.Y = ++y;
cursorPos.X = ++x;
return cursorPos;
}
private void Form1_Load(object sender, EventArgs e)
{
自動換行ToolStripMenuItem.Checked = false;
d = 1;
saveFileDialog1.FileName = "*.txt";
openFileDialog1.FileName = "*.txt";
richTextBox1.ContextMenuStrip = contextMenuStrip1;
timer1.Enabled = true;
timer1.Interval = 100;
this.toolStripStatusLabel1.Text = "系統當前時間:" + DateTime.Now.ToString();
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e) //關閉窗口彈出對話框,在Form1的事件中加入FormClosing事件。
{
DialogResult result;
try
{
if (rtb != richTextBox1.Text)
{
result = MessageBox.Show("文件 " + this.Text + " 的文字已經改變。\r\n\r\n想保存文件嗎?", "記事本", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Exclamation);
if (result == DialogResult.Yes)
{
saveFileDialog1.Filter = @"文本文檔(*.txt)|*.txt|所有格式|*.txt;*.doc;*.cs;*.rtf;*.sln";
if (saveFileDialog1.ShowDialog() == DialogResult.Yes)
{
richTextBox1.SaveFile(saveFileDialog1.FileName.ToString(), RichTextBoxStreamType.PlainText);
richTextBox1.Text = "";
}
else
{
e.Cancel = true;
}
}
else if (result == DialogResult.No)
{
this.Dispose();
}
else
e.Cancel = true;
}
}
catch { }
}
private void ContextMenuStrip1_Opening(object sender, CancelEventArgs e)
{
}
private void RichTextBox1_TextChanged(object sender, EventArgs e)
{
}
private void 新建ToolStripMenuItem_Click(object sender, EventArgs e)
{
saveFileDialog1.FileName = "*.txt";
openFileDialog1.FileName = "*.txt";
DialogResult result;
try
{
if (rtb != richTextBox1.Text)
{
result = MessageBox.Show("文件 " + this.Text + " 的文字已經改變。\r\n\r\n想保存文件嗎?", "記事本", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Exclamation);
if (result == DialogResult.Yes)
{
saveFileDialog1.Filter = @"文本文檔(*.txt)|*.txt|所有格式|*.txt;*.doc;*.cs;*.rtf;*.sln";
saveFileDialog1.ShowDialog();
richTextBox1.SaveFile(saveFileDialog1.FileName, RichTextBoxStreamType.PlainText);
richTextBox1.Text = "";
rtb = richTextBox1.Text;
}
else if (result == DialogResult.No)
{
richTextBox1.Text = "";
rtb = richTextBox1.Text;
}
}
else
{
richTextBox1.Text = "";
rtb = richTextBox1.Text;
this.Text = "無標題-記事本";
剪切ToolStripMenuItem.Enabled = true;
複製ToolStripMenuItem.Enabled = true;
刪除ToolStripMenuItem.Enabled = true;
查找ToolStripMenuItem.Enabled = true;
查找下一個ToolStripMenuItem.Enabled = true;
}
}
catch { }
}
private void openFileDialog1_FileOk(object sender, CancelEventArgs e)
{
}
//判斷文檔內容是否修改,若修改先保存。否則可以打開。
private void 打開ToolStripMenuItem_Click(object sender, EventArgs e)
{
DialogResult result;
try
{
if (rtb != richTextBox1.Text)
{
result = MessageBox.Show("文件 " + this.Text + " 的文字已經改變。\r\n\r\n想保存文件嗎?", "記事本", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Exclamation);
if (result == DialogResult.Yes)
{
saveFileDialog1.Filter = @"文本文檔(*.txt)|*.txt|所有格式|*.txt;*.doc;*.cs;*.rtf;*.sln";
saveFileDialog1.ShowDialog();
richTextBox1.SaveFile(saveFileDialog1.FileName, RichTextBoxStreamType.PlainText);
openFileDialog1.Filter = @"文本文檔(*.txt)|*.txt|所有格式|*.txt;*.doc;*.cs;*.rtf;*.sln";
openFileDialog1.ShowDialog();
richTextBox1.LoadFile(openFileDialog1.FileName, RichTextBoxStreamType.PlainText);
rtb = richTextBox1.Text;
}
else if (result == DialogResult.No)
{
openFileDialog1.Filter = @"文本文檔(*.txt)|*.txt|所有格式|*.txt;*.doc;*.cs;*.rtf;*.sln";
openFileDialog1.ShowDialog();
richTextBox1.LoadFile(openFileDialog1.FileName, RichTextBoxStreamType.PlainText);
rtb = richTextBox1.Text;
}
}
else
{
openFileDialog1.Filter = @"文本文檔(*.txt)|*.txt|所有格式|*.txt;*.doc;*.cs;*.rtf;*.sln";
openFileDialog1.ShowDialog();
richTextBox1.LoadFile(openFileDialog1.FileName, RichTextBoxStreamType.PlainText);
rtb = richTextBox1.Text;
}
this.Text = Path.GetFileName(openFileDialog1.FileName) + "- 記事本";
saveFileDialog1.FileName = openFileDialog1.FileName;
撤銷ToolStripMenuItem.Enabled = false;
}
catch { }
}
private void 撤銷ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (a == 0)
{
richTextBox1.Undo();
a = 1;
}
else if (a == 1)
{
richTextBox1.Redo();
a = 0;
}
}
private void 保存ToolStripMenuItem_Click(object sender, EventArgs e)
{
try
{
if (this.Text == "無標題-記事本")
{
if (d == 1)
{
saveFileDialog1.Filter = @"文本文檔(*.txt)|*.txt|所有格式|*.txt;*.doc;*.cs;*.rtf;*.sln";
saveFileDialog1.ShowDialog();
richTextBox1.SaveFile(saveFileDialog1.FileName, RichTextBoxStreamType.PlainText);
this.Text = Path.GetFileName(saveFileDialog1.FileName) + "- 記事本";
}
}
else
{
saveFileDialog1.Filter = @"|*.txt;*.cs";
if (this.Text == Path.GetFileName(openFileDialog1.FileName) + "- 記事本")
richTextBox1.SaveFile(openFileDialog1.FileName, RichTextBoxStreamType.PlainText);
else
richTextBox1.SaveFile(saveFileDialog1.FileName, RichTextBoxStreamType.PlainText);
}
rtb = richTextBox1.Text;
}
catch { }
}
private void 另存爲ToolStripMenuItem_Click(object sender, EventArgs e)
{
try
{
if (d == 1)
{
saveFileDialog1.Filter = @"文本文檔(*.txt)|*.txt|所有格式|*.txt;*.doc;*.cs;*.rtf;*.sln";
saveFileDialog1.ShowDialog();
richTextBox1.SaveFile(saveFileDialog1.FileName, RichTextBoxStreamType.PlainText);
this.Text = Path.GetFileName(saveFileDialog1.FileName) + "- 記事本";
rtb = richTextBox1.Text;
}
}
catch { }
}
private void 頁面設計ToolStripMenuItem_Click(object sender, EventArgs e)
{/*
try
{
pageSetupDialog1.Document = printDocument1;
pageSetupDialog1.Document.DefaultPageSettings.Color = false;
this.pageSetupDialog1.ShowDialog();
}
catch { }*/
}
private void 打印ToolStripMenuItem_Click(object sender, EventArgs e)
{
/*try
{
printDialog1.Document = printDocument1;
if (printDialog1.ShowDialog() == DialogResult.OK)
{
printDocument1.Print();
}
}
catch
{
MessageBox.Show("未安裝打印機!");
}*/
}
private void 剪切ToolStripMenuItem_Click(object sender, EventArgs e)
{
richTextBox1.Cut();
}
private void 複製ToolStripMenuItem_Click(object sender, EventArgs e)
{
richTextBox1.Copy();
}
private void 粘貼ToolStripMenuItem_Click(object sender, EventArgs e)
{
richTextBox1.Paste();
}
private void 刪除ToolStripMenuItem_Click(object sender, EventArgs e)
{
richTextBox1.SelectedText = "";
}
private void 查找ToolStripMenuItem_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2(this);
this.richTextBox1.HideSelection = false;
f2.ShowDialog();
}
private void 查找下一個ToolStripMenuItem_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2(this);
this.richTextBox1.HideSelection = false;
f2.Show();
//f2.f1 = this;
}
private void 替換ToolStripMenuItem_Click(object sender, EventArgs e)
{
Form3 f3 = new Form3();
f3.Show();
f3.f1 = this;
}
private void 轉到ToolStripMenuItem_Click(object sender, EventArgs e)
{
Form5 f5 = new Form5
{
LineNumber = SendMessage(this.richTextBox1.Handle, EM_LINEFROMCHAR, this.richTextBox1.SelectionStart, 0) + 1
};
if ((f5.ShowDialog() == DialogResult.OK) && (f5.LineNumber < this.richTextBox1.Lines.Length))
{
this.richTextBox1.SelectionLength = 0;
this.richTextBox1.SelectionStart = SendMessage(this.richTextBox1.Handle, EM_LINEINDEX, f5.LineNumber - 1, 0);
this.richTextBox1.Focus();
Point cursorPos = GetCursorPos(this.richTextBox1);
this.toolStripStatusLabel2.Text = "行:" + cursorPos.Y.ToString() + " 列:" + cursorPos.X.ToString();
}
}
private void 全選ToolStripMenuItem_Click(object sender, EventArgs e)
{
richTextBox1.SelectAll();
}
private void 日期時間ToolStripMenuItem_Click(object sender, EventArgs e)
{
richTextBox1.Text = richTextBox1.Text + DateTime.Now.ToString();
}
private void 自動換行ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (j == 0)
{
轉到ToolStripMenuItem.Enabled = false;
if (狀態欄ToolStripMenuItem.Checked == true)
{
statusStrip1.Hide();
狀態欄ToolStripMenuItem.Checked = false;
自動換行ToolStripMenuItem.Checked = false;
狀態欄ToolStripMenuItem.Enabled = false;
richTextBox1.WordWrap = true;
b = 1;
}
else
{
richTextBox1.WordWrap = true;
自動換行ToolStripMenuItem.Checked = true;
狀態欄ToolStripMenuItem.Enabled = true;
}
j = -1;
}
else
{
轉到ToolStripMenuItem.Enabled = true;
if (b == 1)
{
statusStrip1.Show();
狀態欄ToolStripMenuItem.Checked = true;
richTextBox1.WordWrap = false;
狀態欄ToolStripMenuItem.Enabled = true;
自動換行ToolStripMenuItem.Checked = false;
b = 0;
}
else
{
自動換行ToolStripMenuItem.Checked = false;
狀態欄ToolStripMenuItem.Enabled = true;
richTextBox1.WordWrap = false;
}
j = 0;
}
}
private void 字體ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (richTextBox1.SelectionLength > 0)
if (fontDialog1.ShowDialog() == DialogResult.OK)
{
richTextBox1.SelectionFont = fontDialog1.Font;
}
}
private void 狀態欄ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (k == -1)
{
statusStrip1.Show();
狀態欄ToolStripMenuItem.Checked = true;
k = 0;
}
else
{
statusStrip1.Hide();
狀態欄ToolStripMenuItem.Checked = false;
k = -1;
}
}
//contentmenustrip1的內容實現
private void 撤銷ToolStripMenuItem1_Click(object sender, EventArgs e)
{
if (a == 0)
{
richTextBox1.Undo();
a = 1;
}
else if (a == 1)
{
richTextBox1.Redo();
a = 0;
}
}
private void 剪切ToolStripMenuItem1_Click(object sender, EventArgs e)
{
richTextBox1.Cut();
}
private void 複製ToolStripMenuItem1_Click(object sender, EventArgs e)
{
richTextBox1.Copy();
}
private void 粘貼ToolStripMenuItem1_Click(object sender, EventArgs e)
{
richTextBox1.Paste();
}
private void 刪除ToolStripMenuItem1_Click(object sender, EventArgs e)
{
richTextBox1.SelectedText = "";
}
private void 全選ToolStripMenuItem1_Click(object sender, EventArgs e)
{
richTextBox1.SelectAll();
}
}
}
form2代碼:
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 windows_txt
{
public partial class Form2 : Form
{
Form1 f1 = new Form1();
public string str;
int index = 0;
public Form2(Form1 f)
{
InitializeComponent();
this.f1 = f;
}
private void label1_Click(object sender, EventArgs e)
{
}
private void panel1_Paint(object sender, PaintEventArgs e)
{
}
private void Form2_Load(object sender, EventArgs e)
{
//f1 = (Form1)this.Owner;//使form2歸form1所有
//index = f1.myindex;
}
private void button1_Click(object sender, EventArgs e)
{
if(radioButton1.Checked)
{
if (textBox1.Text.Length <= 0)
return;
if (index == 0)//如果光標在最開始
return;
//搜索的起點
int startIndex = index - textBox1.Text.Length;
if (startIndex <= 0)
startIndex = 0;
index = (f1.Controls.Find("richTextBox1", true)[0]).Text.IndexOf(textBox1.Text,startIndex);
if(index == -1)
{
MessageBox.Show("do not find");
index = f1.richTextBox1.Text.IndexOf(f1.richTextBox1.SelectedText);
}
else
{
f1.richTextBox1.Select(index,textBox1.Text.Length);//選中文本
index -= 1;
if (startIndex <= 0)
startIndex = 0;
f1.Activate();
}
}
else
{
if (textBox1.Text.Length <= 0)
return;
//搜索
index = (f1.Controls.Find("richTextBox1", true)[0]).Text.IndexOf(textBox1.Text, index);
if(index == -1)
{
MessageBox.Show("do not find");
index = f1.richTextBox1.Text.IndexOf(f1.richTextBox1.SelectedText)+1;
}
else
{
f1.richTextBox1.Select(index,textBox1.Text.Length);//選中文本
index = index + textBox1.Text.Length;
f1.Activate();
}
}
}
}
}
form3代碼:
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 windows_txt
{
public partial class Form3 : Form
{
public Form1 f1 = new Form1();
public Form3()
{
InitializeComponent();
}
private void Form3_Load(object sender, EventArgs e)
{
}
}
}
form5和form3沒有實現,所以給了代碼也沒用
下面給一些我查到的對我編程有用的截圖
先寫到這裏吧