0

我想知道 printpreviewdialog 工具条的正确名称是什么,以通过反射获得它。我想知道从 windows xp、vista 和 7 中使用的正确名称。我不知道它的名称是否取决于 Windows 版本。目前我正在做(我将其称为 toolStrip1):

    Type type = typeof(this);
    FieldInfo toolStripBar = type.GetField("toolStrip1", BindingFlags.Instance | BindingFlags.NonPublic);
    FieldInfo printToolStripButton = type.GetField("printToolStripButton", BindingFlags.Instance | BindingFlags.NonPublic);
    ToolStrip toolStrip1 = (ToolStrip)toolStripBar.GetValue(this);
    ToolStripButton printButton = (ToolStripButton)printToolStripButton.GetValue(this);
    Bitmap bitmap = new Bitmap(MyBmpImage);
    printButton.Image = bitmap;

toolStrip1 名称是否始终独立于 Windows 版本?

4

1 回答 1

1

你在戳类的私有变量。这会使保修失效,Microsoft 可以决定更改类,这将破坏您的代码。

但是,是的,它被称为“toolStrip1”,并且从 .NET 版本 2.0 开始就有这个名称,可能在此之前。他们不太可能更改此名称,Winforms 处于维护模式,只有关键的安全问题和操作系统兼容性问题得到修复。

如果这让您感到不舒服,那么请不要犹豫,实施您自己的预览对话框。它几乎没有,繁重的工作由 PrintPreviewControl 类完成。您可以查看参考源以获得提示。

于 2012-10-31T12:07:46.190 回答