【问题标题】:FileName in OpenFileDialog appears emptyOpenFileDialog 中的 FileName 显示为空
【发布时间】:2018-02-26 11:33:53
【问题描述】:

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

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

  • 单击单选按钮 1:要求选择一个 pdf 文件,打开 axAcroPDF1 连接并将 OpenFileDialog 文件名输出到文本框
  • 单选按钮 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.");
        }

    }

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

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

有什么想法吗?

【问题讨论】:

  • 只需将textBox1.Text = ofd3.FileName; 移动到if - 注意:OpenFileDialog.FileName 将在OpenFileDialog.ShowDialog()InitialDirectory 之后有一个值,默认为string.Empty -HTH ;)。
  • 仅供参考,您的最后一个 else 将永远不会被击中并且可以被删除。您的最后一个 else if 是多余的(前两个测试失败意味着第三个)...您可以将 that 替换为 else

标签: c# openfiledialog


【解决方案1】:

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

按照你的代码逻辑:

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

对于复选框 2 场景,您尝试在通过运行 ofd3.ShowDialog() 方法设置之前访问 ofd3.FileName

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

您将希望将所有调用移至ofd.FileNameofd3.FileName,在它们各自的if 对话框中检查。

【讨论】:

    【解决方案2】:
    //Try this one    
    if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    axAcroPDF1.src = ofd.FileName;
                    axAcroPDF1.Show();
                    textBox1.Text = ofd.FileName;
                }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      相关资源
      最近更新 更多