OpenFileDialog 中的 FileName 显示为空

FileName in OpenFileDialog appears empty

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

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

这是我的尝试:

    {

        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;

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

有什么想法吗?

ofd.ShowDialog() 方法填充 ofd.FileName 属性。

遵循您的代码逻辑:

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

对于复选框 2 的情况,您试图在 ofd3.FileName 由 运行 和 ofd3.ShowDialog() 方法设置之前访问它。

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

您将希望将所有对 ofd.FileNameofd3.FileName 的调用移动到对话框中各自的 if 检查中。

//Try this one    
if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                axAcroPDF1.src = ofd.FileName;
                axAcroPDF1.Show();
                textBox1.Text = ofd.FileName;
            }