c# - PrintPreviewDialog:通过反射获取它的工具条的名称是什么

时间:2012-10-31 11:50:22

标签: c# reflection toolstrip

我想知道printpreviewdialog工具条的正确名称是什么,以通过反射来实现它。我想知道从windows xp,vista和seven使用的正确名称。我不知道它的名字是否依赖于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版本无关?

1 个答案:

答案 0 :(得分:1)

你正在盯着班级的私人变量。这使得保修失效,微软可以决定更改类,这会破坏您的代码。

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

如果这一切让您感到不舒服,那么请不要犹豫,实施自己的预览对话框。它很少,重要的提升是由PrintPreviewControl类完成的。您可以查看Reference Source的提示。