Panelから派生したカスタムコントロールを作成しました。 デザイナーでフォーカスが失われた場合にのみコントロールが再描画される点を除いて、すべてうまく動作します。 私は何が欠けていますか?ここデザイナーでカスタムコントロールを更新する方法を教えてください。
がCustomControl.cs
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
namespace Picwing
{
public partial class xPanel : Panel
{
private SizeF textSize;
public xPanel() {
InitializeComponent();
}
[Browsable(true)]
public override string Text {
get { return base.Text; }
set { base.Text = value; }
}
protected override void OnPaint(PaintEventArgs pe) {
base.OnPaint(pe);
textSize = pe.Graphics.MeasureString(Text, Font);
pe.Graphics.DrawRectangle(new Pen(ForeColor, 1), pe.ClipRectangle.X, pe.ClipRectangle.Y + textSize.Height/2, pe.ClipRectangle.Width - 1, pe.ClipRectangle.Height - textSize.Height/2 - 1);
pe.Graphics.FillRectangle(new SolidBrush(BackColor), 5, 0, textSize.Width, textSize.Height);
pe.Graphics.DrawString(Text, Font, new SolidBrush(ForeColor), pe.ClipRectangle.X + 6, pe.ClipRectangle.Y);
}
}
}
のコードであり、それがフォーカスを失った前にこれは、xPanel1内部LABEL1を移動した後に撮影した印刷画面です。
を見てみることができますか? –
あなたのコントロールのコードを投稿するのを忘れました。 –
'+ ='でOnPaintイベントを登録しましたか? – jdweng