创建一个窗体程序,添加所使用控件(一个菜单栏、一个panel——用来隐藏左侧的文件目录选项 panel中包含一个Listbox和一个button),然后还有一个用来输入和显示内容的文本框,如图所示
在窗体加载的时候隐藏panel里面的内容,单击显示按钮时再显示panel里面的内容
进入窗体加载事件,设置panel控件的visible属性为false
首先实现打开记录项下的的显示和隐藏功能:
进入显示单击事件
private void 显示ToolStripMenuItem_Click(object sender, EventArgs e)
{
this.panel1.Visible = true;
}
进入隐藏事件
private void 隐藏ToolStripMenuItem_Click(object sender, EventArgs e)
{
this.panel1.Visible = false;
}
进入panel的button单击事件
private void button1_Click(object sender, EventArgs e)
{
this.panel1.Visible = false;
}
运行程序显示效果:
默认是不显示panel内容
单击显示按钮——左侧显示panel内容
单击隐藏按钮——隐藏panel内容
这样我们当我们打开文本文件时,所选择的文本文件名会在左侧进行显示
接下来我们来做文件的打开和保存功能
进入打开按钮单击事件
private void 打开ToolStripMenuItem_Click(object sender, EventArgs e)
{
//创建一个对话框
OpenFileDialog ofd = new OpenFileDialog();
//设置对话框的一些属性
ofd.Title = "请选择文件哟,亲";
ofd.InitialDirectory = @"C:\Users\dell\Desktop";
ofd.Filter = "文本文件|*.txt|所有文件|*.*";
ofd.ShowDialog();
//拿到药打开的文件路径
string path = ofd.FileName;
//判断用户是否单击了取消按钮
if(path=="")
{
return;
}
//使用FileStream来读取文件
using (FileStream fsRead= new FileStream(path,FileMode.OpenOrCreate,FileAccess.Read))
{
byte[] buffer = new byte[1024*1024*5] ;
int r =fsRead.Read(buffer, 0, buffer.Length);
this.textBox1.Text = Encoding.Default.GetString(buffer, 0, r);
}
}
进入保存按钮的单击事件
private void 保存ToolStripMenuItem_Click(object sender, EventArgs e)
{
//创建一个保存对话框对象
SaveFileDialog sfd = new SaveFileDialog();
//设置对话框的属性
sfd.Title = "保存文件";
sfd.InitialDirectory = @"C:\Users\dell\Desktop";
sfd.Filter = "文本文件|*.txt|所有文件|*.*";
sfd.ShowDialog();
//拿到要保存的路径
string path = sfd.FileName;
//判断用户是否单击取消按钮
if(path=="")
{
return;
}
//使用FileStream来进行文件的写入
using (FileStream fsWrite = new FileStream(path,FileMode.OpenOrCreate,FileAccess.Write))
{
byte[] buffer = Encoding.Default.GetBytes(this.textBox1.Text);
fsWrite.Write(buffer, 0, buffer.Length);
}
MessageBox.Show("保存成功");
}
下面来测试下效果吧
单击打开按钮——将要打开的文件内容显示在文本框中:
测试保存功能
在文本框中输入一些东西,然后单击保存按钮,输入文件名,选择路径
在磁盘上找到这个文件,打开测试是否成功
这样我们的打开与保存功能也成功的实现了
下面我们来实现自动换行功能,进入自动换行单击事件
默认我们让文本框的换行功能为false
使用文本框的WordWrap属性来控制文本框是否换行
private void 自动换行ToolStripMenuItem1_Click(object sender, EventArgs e)
{
if(自动换行ToolStripMenuItem1.Text=="自动换行")
{
this.textBox1.WordWrap = true;
自动换行ToolStripMenuItem1.Text = "取消自动换行";
}
else
{
this.textBox1.WordWrap = false;
自动换行ToolStripMenuItem1.Text = "自动换行";
}
}
测试自动换行功能
单击自动换行功能
接下来实现字体和颜色选择功能
进入字体按钮单击事件:
private void 字体ToolStripMenuItem_Click(object sender, EventArgs e)
{
FontDialog fd = new FontDialog();
fd.ShowDialog();
this.textBox1.Font = fd.Font;
}
颜色单击事件
private void 颜色ToolStripMenuItem_Click(object sender, EventArgs e)
{
ColorDialog cd = new ColorDialog();
cd.ShowDialog();
this.textBox1.ForeColor = cd.Color;
}
测试效果:
单击颜色——选择颜色
单击字体
最后实现左侧菜单选择的功能
因为要实现左侧双击文件名——右侧文本框显示对应内容,所以当用户每打开一个文件,都需要在左侧显示,需要一个集合来存取用户打开文件的路径
在打开按钮单击事件内,添加路径到集合中,还需要将文件名添加到ListBox中
allPath.Add(path);
最后在listBox双击事件中实现双击显示内容
private void listBox1_DoubleClick(object sender, EventArgs e)
{
string path =allPath[this.listBox1.SelectedIndex];
using (FileStream fsRead=new FileStream(path,FileMode.OpenOrCreate,FileAccess.Read))
{
byte[] buffer = new byte[1024 * 1024 * 5];
int r = fsRead.Read(buffer, 0, buffer.Length);
this.textBox1.Text = Encoding.Default.GetString(buffer, 0, r);
}
}
测试效果
打开几个文件
双击测试文件
双击test2
这样一个简单的记事本就完成了 !
通过本次学习,复习了Winform的一些控件用法。