我想知道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版本无关?
答案 0 :(得分:1)
你正在盯着班级的私人变量。这使得保修失效,微软可以决定更改类,这会破坏您的代码。
但是,是的,它被称为“toolStrip1”,它自.NET版本2.0起就有了这个名称,可能在此之前。他们不太可能改变这个名称,Winforms处于维护模式,只有关键的安全问题和操作系统兼容性问题得到解决。
如果这一切让您感到不舒服,那么请不要犹豫,实施自己的预览对话框。它很少,重要的提升是由PrintPreviewControl类完成的。您可以查看Reference Source的提示。