【问题标题】:WebBrowser's ShowPrintPreviewDialog() does not show upWebBrowser 的 ShowPrintPreviewDialog() 不显示
【发布时间】:2021-12-24 03:53:36
【问题描述】:

我有一个 winforms 应用程序,我想通过 System.Windows.Forms.WebBrowser 控件显示打印预览。

这是我的助手类:

using System;
using System.Windows.Forms;

namespace Hobbysta.App.Controls.Print
{
    public class PrintingContent
    {
        private readonly string htmlContent;

        public PrintingContent(string htmlContent)
        {
            this.htmlContent = htmlContent;
        }

        public void ShowPreview()
        {
            ExecuteBrowserAction(b => b.ShowPrintPreviewDialog());
        }

        private void ExecuteBrowserAction(Action<WebBrowser> action)
        {
            var browser = new WebBrowser();
            browser.DocumentCompleted += (_, __) =>
            {
                action(browser);
                browser.Dispose();
            };
            browser.DocumentText = htmlContent;
        }
    }
}

我从带有按钮的表单中调用它:

        private void button1_Click(object sender, EventArgs e)
        {
            var result = new PrintingContent("TEST PRINT");
            result.ShowPreview();
        }

结果,创建了新窗口,我可以在选项卡上看到它,但无论如何都无法显示它。点击缩影没有任何作用。

我在这里错过了什么?

【问题讨论】:

    标签: c# winforms webbrowser-control


    【解决方案1】:

    它不起作用,因为您已将其丢弃。注释掉(删除):

    browser.Dispose();

    private void ExecuteBrowserAction(Action<WebBrowser> action)
    {
            var browser = new WebBrowser();
            browser.DocumentCompleted += (_, __) =>
            {
                action(browser);
                //browser.Dispose();
            };
    
            browser.DocumentText = htmlContent;
    }
    

    【讨论】:

    • 对,在注释掉 dispose 行后它可以工作,但是当用户完成预览窗口时,我如何处理浏览器控件?
    猜你喜欢
    • 1970-01-01
    • 2014-09-25
    • 2013-04-23
    • 1970-01-01
    • 1970-01-01
    • 2012-10-27
    • 2013-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多