0

リフレクションを通過させるための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バージョンとは独立して機能していますか?

4

1 に答える 1

1

クラスのプライベート変数を突っついています。それは保証を無効にします、マイクロソフトはクラスを変更することを決定することができます、そしてそれはあなたのコードを壊します。

しかし、はい、それは「toolStrip1」と呼ばれ、.NETバージョン2.0以降、おそらくそれ以前にこの名前が付けられています。この名前が変更される可能性はほとんどありません。Winformsはメンテナンスモードであり、重大なセキュリティの問題とオペレーティングシステムの互換性の問題のみが修正されます。

これで不快感を覚える場合は、遠慮なく独自のプレビューダイアログを実装してください。それにはほとんど何もありません。重労働はPrintPreviewControlクラスによって行われます。ヒントについては、リファレンスソースをご覧ください。

于 2012-10-31T12:07:46.190 に答える