簡體   English   中英

正在為每個子控件調用 OnPaint 方法

[英]OnPaint method is being call for every child control

我有一個 UserControl(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上畫一個邊框,但是矩形也在所有子控件中繪制,我從來沒有讀過它應該為每個子控件調用嗎? 有解決辦法嗎?

為什么要使用PaintEventArgs.ClipRectangle來確定矩形的邊界? 嘗試改用Control.ClientRectangle

因為子控件使父控件無效,導致每個控件都觸發此方法。

不要使用 e 作為參數(e 將是觸發事件的任何控件,無論是否為子控件),而是使用控件名稱顯式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM