私の問題を言葉で説明するのは難しいので、言葉と画像で試してみます:)
Win フォーム アプリ (ms ビジュアル スタジオ プロジェクト) にコンテキスト メニュー コントロールがあります。それは完全に消えるわけではなく、その一部がパネル コントロールの上に残ります。これはカスタム パネル クラスです (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 のバグですか?