1

私たちのプロジェクトでは、多くのフォームとコントロールを使用しています。フォームの1つは、多くのコントロールが含まれて表示されます。フォームを初めて表示するときは、すべてのコントロールを無効にする必要があります(追加の「編集」ボタンがあります)。

しかし、私ComboBoxesはそれらが有効になっているように見えます。それらはこのように動作しません-クリックすることはできず、イベントは発生しません。ウィンドウのサイズ変更など、描画イベントが発生した場合、実際には正しく描画されます。

この動作はWindows7でのみ発生し、WindowsXPでは発生しません。コンボボックスを正しく描画するにはどうすればよいですか?毎回発生するわけではないので、コンボボックスの問題ではないと思います... ...いくつかのコンボボックスが正しく描画され、残りが間違って描画されることもあります。

左側に間違って描画されたコンボボックス-右側に正しく描画された

これを回避するにはどうすればよいですか?

更新:この動作は、Windows7で「クラシック」以外のテーマが選択された場合にのみ発生することがわかりました。

また、WindowMessagesを介してデバッグしたところ、一部のメッセージが失われたり、送信されなかったりすることがわかりました。さまざまな読み取り値を表示しますが、ファイルの長さは数百行です:/

クラシックでは、すべてが正しく描画されます。この動作の原因は何ですか?

UPDATE2:たぶん少しの更新-アプリケーション全体に対してDoubleBufferingをアクティブにした後(メインフォームでWS_EX_COMPOSITEDを使用)、動作はもう存在しません。でもそれでも変ですね。

4

1 に答える 1

0

ペイントイベントで修正された場合は、を呼び出すことで強制的に再描画できます

this.Invalidate();

于 2012-05-02T14:15:30.020 に答える