OnPaintメソッドはすべての子コントロールに対して呼び出されています

StackOverflow https://stackoverflow.com/questions/620533

  •  05-07-2019
  •  | 
  •  

質問

ユーザーコントロール(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 代わりに。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top