Advertisement
Advertisement
| 02.19.2008 at 01:33PM PST, ID: 23175771 |
|
[x]
Attachment Details
|
||
|
[x]
The Solution Rating System
|
||
|
With so many solutions, how can you tell which solutions are most likely to help you and which ones are not? To provide you with a tool to use, we rate our solutions based on various elements that most accurately determine if a solution is a quality solution. To explain what factors affect the solution rating, here are the elements we take into consideration when formulating our solution rating.
Your Input Matters If you have any suggestions that you would like to make for our rating system, please ask a question in the Suggestions Zone of Community Support. Thank you! |
||
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: |
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Text;
using System.Windows.Forms;
namespace TH.CustomControls
{
public partial class FormattedListBox : ListBox
{
public FormattedListBox()
{
InitializeComponent();
base.DrawMode = DrawMode.OwnerDrawVariable;
MeasureItem += onMeasureItem;
DrawItem += onDrawItem;
}
/// <summary>
/// To instance a font you need FontFamily and size parameters. To obtain font familes enumerate (use a foreach) over InstalledFontCollection families = new InstalledFontCollection(). Size is simply an int (12 is "12 point font").
/// </summary>
public void Add(object item, Font font, Color foreColor, Color backColor)
{
FormattedListBoxItemWrapper formattedItem = new FormattedListBoxItemWrapper(item);
formattedItem.Font = font;
formattedItem.BackColor = backColor;
formattedItem.ForeColor = foreColor;
Items.Add(formattedItem);
}
public void Add(object item)
{
FormattedListBoxItemWrapper formattedItem = new FormattedListBoxItemWrapper(item);
formattedItem.Font = Font;
formattedItem.BackColor = BackColor;
formattedItem.ForeColor = ForeColor;
Items.Add(formattedItem);
}
public List<FontFamily> FontList
{
get
{
List<FontFamily> fontList = new List<FontFamily>();
InstalledFontCollection families = new InstalledFontCollection();
foreach (FontFamily family in families.Families)
fontList.Add(family);
return fontList;
}
}
private void onDrawItem(object sender, DrawItemEventArgs e)
{
if (e.Index == 0)
return;
ListBox listBox = (ListBox) sender;
FormattedListBoxItemWrapper item = listBox.Items[e.Index] as FormattedListBoxItemWrapper;
if (item != null)
{
Font font = null;
Color foreColor = Color.Empty;
Color backColor = Color.Empty;
font = item.Font;
foreColor = item.ForeColor;
backColor = item.BackColor;
if (font == null)
font = listBox.Font;
Brush brush;
if (foreColor == Color.Empty)
brush = Brushes.Black;
else
brush = new SolidBrush(item.ForeColor);
if ((e.State & DrawItemState.Selected) == DrawItemState.Selected)
brush = Brushes.White;
if (backColor == Color.Empty)
e.DrawBackground();
else
{
Brush backgroundBrush = new SolidBrush(item.BackColor);
e.Graphics.FillRectangle(backgroundBrush, e.Bounds);
}
string text = listBox.Items[e.Index].ToString();
e.Graphics.DrawString(text, font, brush, e.Bounds.X, e.Bounds.Y);
}
}
private void onMeasureItem(object sender, MeasureItemEventArgs e)
{
ListBox listBox = (ListBox) sender;
if (e.Index != 0)
{
FormattedListBoxItemWrapper item = listBox.Items[e.Index] as FormattedListBoxItemWrapper;
if (item == null || item.Font == null)
e.ItemHeight = 15;
else
{
Font font = item.Font;
e.ItemHeight = font.Height;
}
}
}
private class FormattedListBoxItemWrapper
{
private object _item;
private Color _foreColor;
private Color _backColor;
private Font _font;
public FormattedListBoxItemWrapper(object item)
{
Item = item;
}
public object Item
{
set { _item = value; }
}
public Color ForeColor
{
get { return _foreColor; }
set { _foreColor = value; }
}
public Color BackColor
{
get { return _backColor; }
set { _backColor = value; }
}
public Font Font
{
get { return _font; }
set { _font = value; }
}
public override string ToString()
{
if (_item == null)
return string.Empty;
else
return _item.ToString();
}
}
}
}
|