Я создал собственный элемент управления, полученный из 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);
}
}
}
Это трафаретная печать принято после перемещения Label1 внутри xPanel1, прежде чем оно теряет фокус.
Не могли бы вы напечатать экран, который может? –
Вы забыли написать коды вашего контроля. –
Вы зарегистрировали событие OnPaint с «+ =»? – jdweng