OnPaintメソッドはすべての子コントロールに対して呼び出されています
質問
ユーザーコントロール(WinForms、.net 2.0)を所有しています。これは次のとおりです。
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
var rect = e.ClipRectangle;
var pen = new Pen(Brushes.LightGray, 1);
e.Graphics.DrawRectangle(pen, rect);
}
基本的にUserControlに境界線を描画したいのですが、すべての子コントロールにも長方形が描画されています! すべての子コントロールに対して呼び出す必要があることを読んだことはありませんが、解決策はありますか?
解決
子コントロールは親を無効にするため、このメソッドはそれぞれに対して起動されます。
eをパラメーターとして使用する代わりに(eは、イベントを発生させたコントロールになります、子であろうとなかろうと)、コントロール名を明示的に使用します。
他のヒント
なぜ PaintEventArgs.ClipRectangle
を使用して長方形の境界を決定するのですか? Control.ClientRectangle
代わりに。
所属していません StackOverflow