[英]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.