2

RichTextBoxテキストをファイルに保存する小さなテキスト エディタを作成しました.rtfが、[開く] メニュー オプションをクリックすると、[ファイルを保存] ダイアログ ボックスが開きます。なぜ誰かが私を助けることができるのかわからないのですか?

メニュー ダイアログ項目の名前は次のとおりです。

MenuStrip: menuStrip1 保存: saveMenu 開く: openMenu RichTextBox: richTextBox1

これが私が以下に取り組んでいるコードです...

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        //save the file

        private void menuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {

            // Text from the rich textbox rtfMain
            string str = richTextBox1.Text;
            // Create a new SaveFileDialog object
            using (SaveFileDialog dlgSave = new SaveFileDialog())
                try
                {
                    // Available file extensions
                    dlgSave.Filter = "Rich Text Format (.rtf)|*.rtf";
                    // SaveFileDialog title
                    dlgSave.Title = "Save";
                    // Show SaveFileDialog
                    if (dlgSave.ShowDialog() == DialogResult.OK && dlgSave.FileName.Length > 0)
                    {
                        richTextBox1.SaveFile(dlgSave.FileName);

                    }
                }
                catch (Exception errorMsg)
                {
                    MessageBox.Show(errorMsg.Message);
                } 


        }

        private void openMenu_ItemClicked(object sender, ToolStripItemClickedEventArgs e)

        {
            using (var of = new OpenFileDialog())
            {
                of.DefaultExt = "*.rtf";
                of.Filter = "RTF Files|*.rtf";

                if (of.ShowDialog() == DialogResult.OK)
                    richTextBox1.Rtf = System.IO.File.ReadAllText(of.FileName);
            }



        }

    }
}
4

1 に答える 1

0

openMenu は menuStrip1 の子項目であると想定しています。したがって、クリックすると menuStrip1_ItemClicked イベントが発生し、保存ダイアログを開くためのコードがまさにそこにあります。

おそらく openMenu_ItemClicked メソッドを取り除き、代わりに単一の menuStrip1_ItemClicked メソッドを menuStrip1 の ItemClicked イベントに接続する必要があります。そのメソッドで、クリックされたアイテムとそれに応じて何をすべきかを判断できます。

したがって、menuStrip1_ItemClicked メソッドでは、次のようなことができます...

if(e.ClickedItem == this.openMenu)
{
    //Code to bring up Open File Dialog here
}
else if (e.ClickedItem == this.saveMenu)
{
    //Code to bring up Save Dialog here
}

PSデバッグして実行の流れを確認できます。おそらく、menuStrip1 ItemClickedイベントが最初に発生し、そのコードが最初に実行されていることがわかります。

于 2012-10-21T01:55:12.873 に答える