不一致的行为

本文关键字:不一致 | 更新日期: 2023-09-27 18:13:48

我有一个pdf查看器,为了便于示例,它从列表框中显示选定的文件名。它是一个简单的表单,带有列表框、axAcroPDF和文本框,用于确认正确的文件路径。代码如下,文件被放置在Debug文件夹下的pdf文件夹中:

using System;
using System.Windows.Forms;
namespace pdf_viewer
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            string path = AppDomain.CurrentDomain.BaseDirectory + "pdfs''" + listBox1.SelectedItem.ToString();
            textBox1.Text = path;
            InitializeAdobe(path);
        }
        private void InitializeAdobe(string filePath)
        {
                axAcroPDF1.LoadFile(filePath);
                axAcroPDF1.src = filePath;
                axAcroPDF1.setShowToolbar(false);
                axAcroPDF1.setView("Fit");
                axAcroPDF1.setLayoutMode("SinglePage");
                axAcroPDF1.Show();
        }
    }
}

一切正常,但有几个问题:

  • 第一次循环遍历文件时,它会在窗口中正确显示,但如果您返回到某个条目,第二次它会在右侧显示工具栏,尽管在代码中禁用了此功能。工具栏占据了窗口的大部分。
  • 当你关闭窗口时,它需要非常长的时间才能关闭,这对我来说意味着有很多家务在进行。关于为什么会发生这种情况的线索吗?

除此之外:

  • 我需要两个。loadfile和。src语句在代码中,因为这两个工作在隔离,但是一个优于另一个。似乎并没有改变上述问题。这个方法是从另一个堆栈溢出问题中删除的。

感谢

PS自从最初发布以来,我曾试图在web浏览器窗口中显示,但完全相同的事情发生在工具栏面板上,显示第二次选择一个条目。代码如下:

webBrowser1.Url = new Uri(path);

不一致的行为

在很长一段时间后重新审视了这个问题,在这里找到了答案从ActiveX中禁用adobereader工具栏

它似乎在axAcroPDF和web浏览器窗口中工作。对于axAcropdf,显示pdf而不显示工具栏的代码是(使用问题示例):

this.axAcroPDF1.src = filePath + "#toolbar=0";
            this.axAcroPDF1.setView("Fit");
            this.axAcroPDF1.setLayoutMode("SinglePage");
            this.axAcroPDF1.Show();

浏览器窗口

InitializeAdobe(path);    
webBrowser1.Url = new Uri(path + "#toolbar=0");