How to implement custom drawing of the fields inside datasources? (Winforms Edition 2.0)
Last modified:
The following code implements custom drawing of the fields inside datasources. It instructs to display field's alternate name if it's not empty; otherwise to display field name.
void queryBuilder1_FieldListDrawItem(Graphics g, Rectangle rect, DrawItemState state, MetadataField field, ref bool handled)
{
Brush bgBrush;
Color textColor;
String s = String.Empty;
if ((state & DrawItemState.Selected) == DrawItemState.Selected)
{
bgBrush = SystemBrushes.Highlight;
textColor = SystemColors.HighlightText;
}
else
{
bgBrush = new SolidBrush(Color.LightYellow);
textColor = Color.MediumSeaGreen;
}
rect.X -= rect.Height;
rect.Width += rect.Height;
g.FillRectangle(bgBrush, rect);
if (field != null)
{
if (!String.IsNullOrEmpty(field.AltName) && queryBuilder1.UseAltNames)
{
s = field.AltName;
}
else
{
s = field.Name.QualifiedNameWithoutQuotes;
}
}
else
{
s = "*";
}
TextRenderer.DrawText(g, s, new Font("Arial", 8, FontStyle.Bold), rect.Location, textColor);
if ((state & DrawItemState.Focus) == DrawItemState.Focus)
{
ControlPaint.DrawFocusRectangle(g, rect);
}
handled = true;
}