winform学习——制作一个简单的记事本程序

创建一个窗体程序,添加所使用控件(一个菜单栏、一个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的一些控件用法。

猜你喜欢

转载自blog.csdn.net/qq_33407246/article/details/86611322