winforms 为什么我的保存文件对话框在运行时打开两次?

jxct1oxe  于 2023-02-24  发布在  其他
关注(0)|答案(3)|浏览(202)

我有一个小应用程序,需要在单击按钮时将富文本框的内容保存为文本文件。

//save button logic
private void saveBtn1_Click(object sender, EventArgs e)
{
    //set up new SaveFileDialog
    SaveFileDialog saveFileDialog1 = new SaveFileDialog();
    saveFileDialog1.Filter = "Text Files (*.txt)|*.txt";
    saveFileDialog1.Title = "Save a text File";

    //prompt the user
    DialogResult result = saveFileDialog1.ShowDialog();

    //if they select save write the contents of the RTB to a text file
    if (result == DialogResult.OK)
    {
        System.IO.File.WriteAllText(saveFileDialog1.FileName, richTextBox1.Text);
    }
}

这似乎是一段非常直接的代码,但我不明白为什么对话框会打开两次。

cyej8jka

cyej8jka1#

只是将Servy的评论扩展为一个答案,因为我怀疑他的诊断是正确的。我将给予一些诊断/发现问题的简单建议。首先,您可以在事件处理程序中放置一个断点,如果您两次进入事件处理程序,那么这显然就是问题所在。(甚至不运行)是简单地右击方法名并选择“查找所有引用”,这将给予你列出代码中对这个方法的所有引用。方法本身,你希望注册它的地方,以及你没有注册的地方。删除一个,你的问题就会消失。

jtjikinw

jtjikinw2#

最短答案:你在代码中调用了两次保存对话框()。2删除第二个对话框,你的问题就会解决。

cig3rfwq

cig3rfwq3#

因为你被利用了两次。这对你来说是个简单的例子

SaveFileDialog save = new SaveFileDialog();
save.DefaultExt = "zip";
save.Filter = "zip faylı (*.zip)|*.7z|Hamısı(*.*)|*.*";
save.ShowDialog(); // this is first using

if (save.ShowDialog() == DialogResult.OK) // and second using save.ShowDialog()
{
    // yours code here
}

相关问题