0
很難explane我的問題的話,那麼我將文字和圖像:)的C#Windows窗體的上下文菜單控制不消失,完全
我有上下文菜單控制,我贏形式的應用程序(微軟的Visual嘗試工作室項目)。 它不會完全消失,它的一部分保留在我的面板控件上,它是自定義面板類(帶有bordercolor屬性)。僅在Windows XP中出現的問題,無法在Windows 7
2.源代碼:
public class MyPanel : Panel
{
private System.Drawing.Color colorBorder = System.Drawing.Color.Transparent;
public MyPanel()
: base()
{
this.SetStyle(ControlStyles.UserPaint, true);
this.BorderStyle = BorderStyle.None;
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
e.Graphics.DrawRectangle(new System.Drawing.Pen(
new System.Drawing.SolidBrush(colorBorder), 2), e.ClipRectangle);
}
protected override void OnResize(EventArgs e)
{
Invalidate();
}
public System.Drawing.Color BorderColor
{
get
{
return colorBorder;
}
set
{
colorBorder = value;
}
}
}
如何解決這個問題呢?當發生上下文菜單關閉事件時,我可以爲面板添加Invalidate()(重新繪製它),但是我想知道爲什麼會出現這種問題,是否會出現一些.NET Framework錯誤?
你只畫在面板的頂部線條,僅此而已。我需要與邊境 – vinsa
面板,然後使用新的Rectangle(0,0,this.ClientSize .Width-2,this.ClientSize.Height-2);請不要猶豫,在這裏使用答案來學習如何編寫正確的代碼,我們真的不想爲你做這項工作:)希望你明白爲什麼使用ClipRectangle是錯的,那就是重點。 –
是的,問題是ClipRectangle,所以我現在使用'new Rectangle(0,0,this.ClientSize.Width,this.ClientSize.Height)'代替它,它的工作非常好,謝謝。 – vinsa