【问题标题】:pdfviewer retain old pdf valuepdfviewer 保留旧的 pdf 值
【发布时间】:2017-11-23 15:10:58
【问题描述】:

如何在 devexpress 中将 pdf 加载到 pdfViewer。我有以下代码将 pdf 从xtraGrid 加载到EditForm 但 pdfViewer 加载第一个记录 pdf 文件并保留它。当 EditForm 关闭时,如何重置 pdf?

//wHLDRWGTextEdit-下面代码中包含文件路径

   private void ucFabLog_Load(object sender, EventArgs e)//ucFabLog is custom EditForm
        {

            try
            {
                FileStream stream = new FileStream(wHLDRWGTextEdit.Text, FileMode.Open);
                pdfViewer1.LoadDocument(stream);
           }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {

            }

        }

我通过添加 pdfViewer1.Refresh();pdfViewer1.DetachStreamAfterLoadComplete = false; 尝试了以下操作,但仍然显示来自另一条记录的 PDF

      private void ucFabLog_Load(object sender, EventArgs e) //ucFabLog is custom EditForm
    {

        try
        {
            FileStream stream = new FileStream(wHLDRWGTextEdit.Text, FileMode.Open);
            pdfViewer1.DetachStreamAfterLoadComplete = false;
            pdfViewer1.LoadDocument(stream);
            pdfViewer1.Refresh();
                        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
        finally
        {

        }

    }

【问题讨论】:

  • 我没有使用 DevExpress 的经验,但我猜这是因为 stream 仍然打开?我没有看到你 ClosingDisposing 你的信息流。在using 中包装您的信息流。也做了一个快速的谷歌,这段代码PdfViewerControl1.DocumentSource = null;可能会有所帮助。
  • @12seconds 当我在`pdfViewer1.LoadDocument(stream) 旁边添加pdfViewer1.Dispose(); 时;`现在它不加载任何pdf,我可以将它放在哪里?
  • Closing()Dispose() 应该是您完成 stream 后做的最后一件事。不管你有没有试过.DocumentSource = null;
  • @12seconds 奇怪的是,在第一个向我显示第一个 pdf 文件之后,相同的代码在按钮单击时有效,但在 Form_load 事件上无效。

标签: c# winforms devexpress


【解决方案1】:

如果 ucFabLog 是您的自定义编辑表单,我应该注意,此控件仅在您第一次调用编辑表单时创建一次。因此,Load 事件只会引发一次。请尝试 VisibleChanged 事件。

【讨论】:

  • 谢谢@Svetlana,你的意思是这样 ` private void ucFabLog_VisibleChanged(object sender, EventArgs e) { try { this.pdfViewer1.LoadDocument(wHLDRWGTextEdit.Text); } catch (Exception ex) { MessageBox.Show(ex.Message); } }` 和 Load Event 中什么都没有?
  • 你是最棒的!!!!!!!你不知道我花了多少时间。谢谢谢谢!!!
猜你喜欢
  • 1970-01-01
  • 2016-03-08
  • 1970-01-01
  • 2016-03-11
  • 2019-05-17
  • 1970-01-01
  • 2012-03-15
  • 1970-01-01
  • 2019-07-08
相关资源
最近更新 更多