この原因は何ですか?他のコントロールは正常に表示されます。ダイアログを移動するときにmodaldialogのカスタムコントロールが再描画されない
public CustomControl()
{
SetStyle(ControlStyles.ResizeRedraw, true);
SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
SetStyle(ControlStyles.UserPaint, true);
}
カスタムコントロールは、TableLayoutPanelに配置されています。
...................
編集:明確にするため: は、あなたが一番上に小さなモーダルダイアログフォームとウィンドウサイズの制御を持っていると仮定します。ダイアログウィンドウを移動すると、ペイントのようにコントロールのウィンドウが表示されます(枠線はコントロールにペイントされます)。他のコントロールが同じフォーム、つまりmontcalendarやその他のカスタムコントロール上で行うように、コントロール自体は再描画されません。私はこれの原因を見つけることができないのでしょうか?
アーティファクトを描くの小さな詳細:
私は、コントロールのOnPaintハンドラーで描画しています。私はコントロールやパネルからしか派生していません...問題のコントロールはペイント自体をしません、他のコントロールの複合コントロールの多くです。 frm.Show()はfrm.ShowDialog()と同じ結果を返します。 –
スクリーンショットには、コード内のGraphics.ClipBoundsを使用して描画する場所を示す記号が表示されます。しないでください、それは間違っています。コントロール境界のみを使用します。 –
あなたは正しいです!私はe.Cliprectangleを使ってペイントしていました...次の行で問題を修正しました:Rectangle boundsToPaint = new Rectangle(0,0、this.Bounds.Width、Bounds.Height); –