代码之家  ›  专栏  ›  技术社区  ›  Marc

如何从WebBrowser.ShowPageSetupDialog获取对话框结果

  •  0
  • Marc  · 技术社区  · 17 年前


    现在我想添加一个打印按钮,显示页面设置对话框,然后在用户按下OK按钮时直接打印,或者在用户按下cancel按钮时取消打印。
    但是WebBrowser.ShowPageSetupDialog不返回DialogResult,只返回void。
    是否有我遗漏的东西或其他了解用户行为的方式?

    1 回复  |  直到 17 年前
        1
  •  1
  •   Austin Salonen gmlacrosse    17 年前

    WebBrowser控件下的“页面设置”对话框设置注册表项。我过去所做的是在代码中为用户设置这些值,只给他们打印选项。

        2
  •  1
  •   Miscavel    6 年前

    当您在IE页面设置中按下OK按钮时,它将设置中写入的边距值存储为字符串(REG_SZ),长度为8,剩余空间填充0。

    0.75存储为0.750000

    2存储为2.000000

    但是,如果将它们作为字符串进行比较,则0.75和0.750000将被视为不同。

    0.75万->0.75

    0.500000->0.5

    1. 在字符串变量中存储一个边距值

    2. 调用WebBrowser.ShowPageSetupDialog()

    private void ie_DocumentCompleted(object _sender, WebBrowserDocumentCompletedEventArgs e)
    {
        System.Windows.Forms.WebBrowser ie = (System.Windows.Forms.WebBrowser)_sender;
    
        string strKey = "Software\\Microsoft\\Internet Explorer\\PageSetup";
        bool bolWritable = true;
        RegistryKey ok = Registry.CurrentUser.OpenSubKey(strKey, bolWritable);
    
        ok.SetValue("margin_left", 0.75, RegistryValueKind.String);
    
        string reg_validation = (string) ok.GetValue("margin_left");
    
        ie.ShowPageSetupDialog();
    
        if (reg_validation.Equals((string)ok.GetValue("margin_left")))
        {
            MessageBox.Show("Cancel");
        }
        else
        {
            MessageBox.Show("OK");
            ie.Print();
        }
        ok.Close()
    }
    
    推荐文章