OpenFileDialog中的FileName显示为空

问题描述 投票:0回答:2

我有两个单选按钮和一个常规按钮 - button2。

我创建了一个if else语句,用于检查单击哪个单选按钮并相应地执行给定任务。特别是,如果:

  • 单击单选按钮1:要求选择一个pdf文件,打开axAcroPDF1连接并将OpenFileDialog FileName输出到文本框中
  • 点击单选按钮2:其他
  • 没有单击单选按钮:发送消息..选择文件。

这是我的尝试:

    {

        if (radioButton1.Checked == true)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Filter = "PDF|*pdf";

            if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                axAcroPDF1.Show();
                axAcroPDF1.src = ofd.FileName;
            }

            textBox1.Text = ofd.FileName;

            MessageBox.Show(ofd.FileName);
        }


        else if (radioButton2.Checked == true)
        {
            OpenFileDialog ofd3 = new OpenFileDialog();
            ofd3.Filter = "PDF|*pdf";
            textBox1.Text = ofd3.InitialDirectory + ofd3.FileName;

            if (ofd3.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                axAcroPDF1.Show();
            }
        }

        else if (radioButton2.Checked == false & radioButton1.Checked == false)
        {
            MessageBox.Show("Please select a processing option");
        }

        else
        {
            MessageBox.Show("Error.");
        }

    }

问题是我无法在:textBox1.Text = ofd.FileName;中提取FileName字符串

基本上,这会返回一个空字符串。我不确定这是怎么可能的,实际上axAcroPDF1.src成功打开了所选的pdf。

有任何想法吗?

c# openfiledialog
2个回答
1
投票

它是填充ofd.ShowDialog()财产的ofd.FileName方法。

遵循代码的逻辑:

对于复选框1,您在访问ofd.ShowDialog()之前检查axAcroPDF1的相应返回是正确的,但在复选框中显示名称之前,没有检查用户是否选择了文件。

对于复选框2方案,您尝试在运行ofd3.FileName方法之前访问ofd3.ShowDialog()

这里的关键点是ofd3.ShowDialog()是代码中为用户弹出对话框的点。

您需要将对齐ofd.FileNameofd3.FileName的所有调用都移到对话框中各自的if检查中。


1
投票
//Try this one    
if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                axAcroPDF1.src = ofd.FileName;
                axAcroPDF1.Show();
                textBox1.Text = ofd.FileName;
            }
© www.soinside.com 2019 - 2024. All rights reserved.