5

TabPageフォームのサイズを変更したときに .NET WinForms が背景を完全に再描画しない理由はありますか? それは完全に白いはずですが (Windows 7 の場合)、一部が灰色のままです ( SystemColors.Control、ほとんどの場合)。最大化ボタンを押すたびに、現在表示TabPageされている背景が再描画されません。また、サイズを変更する場合は、フォームを描画するために、画面の境界を越えてフォームを移動する必要があります。

フォームを最小化してから元に戻すと、同じことが起こります。その場合、TabPage背景はグレーのままです。子コントロールは適切にレンダリングされます (たとえば、ラベルは白い背景を維持します)。

Windows 7 32 ビット、.NET 3.5 を使用しています。タブ コントロールは Visual Studio デザイナーを使用して追加され、いくつかのラベルと 2 つのテキスト ボックスが含まれています。ペイント メッセージに関連するネイティブ スタイル フラグは変更していません。

[編集]

テスト プロジェクトを作成しました。ソースはこちらにアップロードされています

これは、ウィンドウが最初にどのように見えるかです:

フォームの初期状態

これは、ウィンドウを最小化してから復元した後のウィンドウの外観です。

最小化して復元

TabPage背景色の変化に注意してください。

4

3 に答える 3

8

tabControlのClientSizeChangedメソッド内にtabControl.Refresh()の呼び出しを追加することで、これを修正しました。これはタブコントロール全体に対するものであり、個々のタブページに対するものではないことに注意してください。

于 2012-11-12T20:10:02.770 に答える
5

わかりました、次の手順を実行することで問題を解決できると思います。

tabPage設定UseVisualStyleBackColorし、この場合は必要な色にFalse設定するだけですBackColorWhite

また、すべての側面にアンカーを設定する代わりに、 に設定するだけDockですFill。通常、ラベルのサイズを設定することは避け、アンカーのみを試してください。

于 2012-09-09T12:22:23.460 に答える
2

このビジュアルスタイルのバグは、.NET4.0で修正されています。

于 2012-09-14T12:05:54.010 に答える