Winforms アプリケーションで CAB とインフラジスティックスを使用しています。このスプリッター内にグリッド、ボタン、ラベルを備えたスプリッターとユーザー コントロールがいくつかあるフォームで、実行時にフォームを開くと、ユーザー コントロールが正しく描画されません。この問題は win7 x64 で既知であり、ここで説明されているように、Windows 7 の Split Container ペイントの問題内のコントロールと、Component Factory の Web サイト キャッシュからのこのアーカイブ リンクで説明されています。上記のトピックで提供されている回避策は、OnSizeChanged メソッドをオーバーライドすることで構成されています。
protected override void OnSizeChanged(EventArgs e)
{
if (Handle != null)
BeginInvoke((MethodInvoker)delegate
{ base.OnSizeChanged(e); });
}
コンストラクターからフォーム コンポーネントを初期化するときにこのメソッドが呼び出され (コンストラクターから呼び出される InitializeComponent )、値が null の場合に作成されるため、Handle プロパティにアクセスするときに OnLoad メソッドが呼び出される CAB を使用する場合のこのソリューションの問題点、
protected override void OnLoad(EventArgs e)
{
_presenter.OnViewReady();
base.OnLoad(e);
}
ここで _presenter はまだ設定されておらず、その値は null であり、例外がスローされます。
この問題について何ができますか?
よろしく。