9

現在サイレントプリントモジュールを作成中です。私が使用している現在のコントロールは、コントロール ハンドルが既に作成されていることを確認しています ( IsHandleCreated)。私はこれをごまかすためにあらゆることをしましたが、まったく運がありませんでした。

画面に何も表示せずにコントロールのハンドルを作成する方法についてのアイデアはありますか?

4

5 に答える 5

22

Handleプロパティにアクセスする必要があります (結果をダミー変数などに入れます)。リフレクターを覗いてみる ハンドルの作成を強制します。

于 2010-07-20T11:07:08.093 に答える
5

CreateParamsプロパティ ゲッターをオーバーロードしてみてください。WS_VISIBLEその中でフラグをクリアします。

于 2009-11-27T10:29:39.870 に答える
2

他のコントロールでも同じ問題が発生し、Control.CreateControl()次の方法を使用しました。

private void CheckForExistingHandle(Control control)
{
    if (!control.IsHandleCreated)
        control.CreateControl();
}

しかし、印刷モジュールでどのように機能するのかわかりません。

于 2010-07-20T12:06:56.997 に答える
0

CreationParams の WS_VISIBLE を設定することで、この煩わしいハンドル作成の問題を解決しました。Control の CreationParams プロパティをオーバーライドするか、適切な CreateParams インスタンスで CreateHandle メソッドを呼び出すことができます。リンクを見る

于 2010-07-20T11:04:28.287 に答える