Главная » C#, Компоненты » Дополнительная отрисовка компонентов

0

Продолжаем изучать возможности, предоставляемые классом дизайнера. Довольно часто у авторов компонентов возникает желание увековечить свое имя и авторство. Указывать такую информацию во время выполнения программы было бы глупо, такой компонент никому не нужен. А вот компонент, отображающий авторскую информацию во время разработки, вполне можно вытерпеть.

Первый вариант— перекрыть метод on Pa int Background () и производить дополнительную отрисовку, проверяя режим работы:

protected override void OnPaintBackground(PaintEventArgs pevent)

}

base.OnPaintBackground(pevent);

// Если это режим разработки, выводим дополнительную информацию if (DesignMode)

{

string text = "(с) Copyright information here"; pevent.Graphics.DrawString(text, this.Font, new SolidBrush(Color.Black) , 0,

this.Height – (int)pevent.Graphics.MeasureString(

text, this.Font).Height – 3);

}

}

Это не очень хорошо, т. к. код времени разработки будет смешиваться с кодом времени выполнения. Второй вариант— использовать метод OnPaintAdornments () класса ControlDesigner, как ЭТО Показано В листинге 6.10. Никаких дополнительных проверок не требуется, и код, выводящий дополнительную информацию, не мешает коду времени выполнения.

Листинг 6 10 Дополнительная отрисонка компонента

using System; using System.Collections; using System.Collections.Generic; using System.Text;

using System.Windows.Forms.Design; using System.Drawing; using System.ComponentModel; using System.Windows.Forms;

namespace MyControl {

class GradientLabelDesigner : ControlDesigner

f

protected override void OnPaintAdornments(PaintEventArgs pe) {

base.OnPaintAdornments(pe);

string text = "(c) Copyright information here"; pe.Graphics.Drawstring(text, this.Control.Font, new SolidBrush(Color.Black), 0,

this.Control.Height – (int)pe.Graphics.MeasureString(text, this.Control.Font).Height – 3);

Литература:

Агуров П. В. C#. Разработка компонентов в MS Visual Studio 2005/2008. – СПб.: БХВ-Петербург, 2008. — 480 е.: ил.

По теме:

  • Комментарии