OpenFileDialog在我的C#程序中打开两次

时间:2017-08-04 19:48:30

标签: c#

我遇到的问题与我用于C#应用程序的代码有关。当我点击浏览按钮并选择文件时,对话框会打开两次。

private void txt_location_TextChanged(object sender, EventArgs e) 
{
    string folderPath = "";
    FolderBrowserDialog folderBrowserDialog1 = new FolderBrowserDialog();
    if (folderBrowserDialog1.ShowDialog() == DialogResult.OK) {
        folderPath = folderBrowserDialog1.SelectedPath;
    }
}

private void Button21_Click(object sender, EventArgs e) 
{
    using(var fbd = new FolderBrowserDialog()) {
        DialogResult result = fbd.ShowDialog();

        if (result == DialogResult.OK && !string.IsNullOrWhiteSpace(fbd.SelectedPath)) {
            selectedPath = fbd.SelectedPath;
            txt_location.Text = selectedPath;
        }
    }
}

private void bunifuThinButton21_Click_1(object sender, EventArgs e) 
{
    System.IO.StreamWriter file;
    bool isvalid = ValidateInputs();
    try {
        file = new System.IO.StreamWriter(selectedPath + @ "\dred.txt");

        catch (Exception ex) {
            MessageBox.Show("Please, Select valid Path..");
            return;
        }
        try {
            if (isvalid) {
                WriteLines(file);
            }
        } 
        catch (Exception ex2) {
           MessageBox.Show(ex2.Message);
        } 
        finally {
            file.Close();
        }
    }
}

显然,只打开一次才能让我读取所选文件。这是有效的,但只有在我选择了两次文件后才能使用。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您正在实例化FolderBrowserDialog并在两个不同的事件上显示: txt_location_TextChanged 和 Button21_Click

你有两个弹出窗口,因为每个弹出窗口分别触发一次。

你应该完全删除事件txt_location_TextChanged,除非你需要它再一次没有弹出FolderBrowserDialog。