現在サイレントプリントモジュールを作成中です。私が使用している現在のコントロールは、コントロール ハンドルが既に作成されていることを確認しています ( IsHandleCreated
)。私はこれをごまかすためにあらゆることをしましたが、まったく運がありませんでした。
画面に何も表示せずにコントロールのハンドルを作成する方法についてのアイデアはありますか?
Handleプロパティにアクセスする必要があります (結果をダミー変数などに入れます)。リフレクターを覗いてみる ハンドルの作成を強制します。
CreateParams
プロパティ ゲッターをオーバーロードしてみてください。WS_VISIBLE
その中でフラグをクリアします。
他のコントロールでも同じ問題が発生し、Control.CreateControl()
次の方法を使用しました。
private void CheckForExistingHandle(Control control)
{
if (!control.IsHandleCreated)
control.CreateControl();
}
しかし、印刷モジュールでどのように機能するのかわかりません。
CreationParams の WS_VISIBLE を設定することで、この煩わしいハンドル作成の問題を解決しました。Control の CreationParams プロパティをオーバーライドするか、適切な CreateParams インスタンスで CreateHandle メソッドを呼び出すことができます。リンクを見る