记录:记事本

i_f24.gifi_f24.gif好一段时间了,今天写了个简单的记事本,记录一下我的成长,是不是长的太慢了呢?!

i_f24.gifi_f24.gif目前这个记事本可以实现一些比较常用的功能,比如复制,粘贴,保存,切换字体之类的工作都能干了。后面再继续强大。。。

i_f24.gifi_f24.gif记事本是由一个菜单栏和文本框组成的,简单实用。其实做这些界面都还好,只要熟悉了窗体以及各种控件的基本属性就差不多了。

下面是一个简单的记事本窗体:

221457927.png

在这里面我们为上下文菜单中的菜单项设置功能。

这里面我犯了一个错误。

问题:

在写复制粘贴功能的时候想的过于复杂。我以为复制需要将所选定内容通过读取流(StreamReader)先读到流里面,然后再在粘贴的时候再次通过写入流(StreamWriter)将之前读到的内容再写如指定的位置。但是WinForm已经给我们预先准备好了Copy方法和Paste方法,我们可以直接通过文本框调用方法就可以了。

思考:

在接触新知识的时候我们除了用学过的知识来解决它,更应该做的是寻找新的方法。如果单凭老师将的,而不去自己摸索,那收获远远下减少了。猜猜蒙蒙碰碰,更能为我们带来意想不到的收获。

看看代码:

    //复制
    private void mnuCopy_Click(object sender, EventArgs e)
    {
        this.txtContent.Copy();
    }
    //粘贴
    private void mnuPast_Click(object sender, EventArgs e)
    {
        this.txtContent.Paste();
    }
    //剪贴
    private void mnuCut_Click(object sender, EventArgs e)
    {
        this.txtContent.Cut();
    }
    //全选
    private void mnuSelectAll_Click(object sender, EventArgs e)
    {
        this.txtContent.SelectAll();
    }
    //新建
    private void NewToolStripMenuItem_Click(object sender, EventArgs e)
    {
        this.txtContent.Text = "";//新建其实就是将文本框清空
    }
    //打开一个新的文件
    private void OpenToolStripMenuItem_Click(object sender, EventArgs e)
    {
        //提示用户打开文件
        OpenFileDialog ofd = new OpenFileDialog();
        DialogResult dr = ofd.ShowDialog();
        if (dr==DialogResult.Cancel)
        {
            return;
        }
        string path = ofd.FileName;
        StreamReader sr = new StreamReader(path,Encoding.GetEncoding("GB2312"));
        string s=sr.ReadToEnd();
        this.txtContent.Text = s;
        sr.Close();
    }
    private void SaveToolStripMenuItem_Click(object sender, EventArgs e)
    {
        //判断当前有没有存储路径
        if (savePath == null)
        {
            //如果没有,就意味着着一定是第一次保存。就打开对话框提示用户选择路径
            SaveFileDialog sfd = new SaveFileDialog();
            DialogResult dr = sfd.ShowDialog();
            //判断用户的选择以确定是否要继续
            if (dr == DialogResult.Cancel)
            {
                return;
            }
            //选择要保存的路径
            string path = sfd.FileName;
            savePath = path;
        }//创建一个流(一根管道),用来存储写入的文件
        StreamWriter sw = new StreamWriter(savePath, false, Encoding.GetEncoding("GB2312"));
        //将文本中的内容写入流
        sw.Write(this.txtContent.Text);
        sw.Flush();
        sw.Close();
    }
    //另存为
    string savePath = null;
    private void OtherSaveToolStripMenuItem_Click(object sender, EventArgs e)
    {
        //另存为按钮每次被按下都应该弹出一个路径选择对话框
        //提示用户选择保存路径
        SaveFileDialog sfd = new SaveFileDialog();
        DialogResult dr = sfd.ShowDialog();
        if (dr == DialogResult.Cancel)
        {
            return;
        }
        //选择要保存的路径
        string path = sfd.FileName;
        savePath = path;
        //将流中的内容写进选择好的路径
        StreamWriter sw = new StreamWriter(savePath, false, Encoding.GetEncoding("GB2312"));
        //将文本中的内容写入流
        sw.Write(this.txtContent.Text);
        sw.Flush();
        sw.Close();
    }
    //退出
    private void exitToolStripMenuItem_Click(object sender, EventArgs e)
    {
        this.Close();
    }
    //删除
    private void deleteToolStripMenuItem_Click(object sender, EventArgs e)
    {
        this.txtContent.Cut();//将选定内容移动到剪贴板
        Clipboard.Clear();//从剪贴板中移除所有数据
    }
    //撤销
    private void toolStripMenuItem5_Click(object sender, EventArgs e)
    {
        this.txtContent.Undo();//撤销文本框的上一个编辑操作
    }
    //设置字体
    private void fontToolStripMenuItem_Click(object sender, EventArgs e)
    {
        //提示用户选择一种字体
        FontDialog fd = new FontDialog();
        //将当前字体传进选择框,这样即使用户没有选择也不会改变原来的字体样式
        fd.Font = this.txtContent.Font;
        DialogResult dr = fd.ShowDialog();
        //判断用户的选择
        if (dr==DialogResult.Cancel)
        {
            return;
        }
        //将用户选择字体用于当前文档
        this.txtContent.Font = fd.Font;
    }
    //自动换行
    private void autoWorlWrapToolStripMenuItem_Click(object sender, EventArgs e)
    {
        //设置自动换行工具菜单项的checked属性的值与当前相反
        this.autoWorlWrapToolStripMenuItem.Checked = !this.autoWorlWrapToolStripMenuItem.Checked;
        //将设置好的值应用到当前文档
        this.txtContent.WordWrap = this.autoWorlWrapToolStripMenuItem.Checked;
    }
    //获取当前日期
    private void 时间日期ToolStripMenuItem_Click(object sender, EventArgs e)
    {
        this.txtContent.Text+= DateTime.Now.ToString();//在文档最后加入当前日期
    }
}

i_f24.gif学习是一个很漫长的过程。

i_f24.gif送上我的一贯作风。

j_0047.gifAjax的姑娘,加油!j_0047.gif

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章