我创建了一个小文本编辑器,将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);
}
}
}
}
答案 0 :(得分: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
}
P.S。您可以调试以查看执行流程,您可能会看到首先引发menuStrip1 ItemClicked事件,并且首先执行该代码。