記錄:記事本

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

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