/*
User Interfaces in C#: Windows Forms and Custom Controls
by Matthew MacDonald
Publisher: Apress
ISBN: 1590590457
*/
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Drawing.Text;
namespace DataBinding101
{
public class BindingUnusualProperties : System.Windows.Forms.Form
{
internal System.Windows.Forms.Label Label2;
internal System.Windows.Forms.Label Label1;
internal System.Windows.Forms.ListBox lstFonts;
internal System.Windows.Forms.Label lblSampleText;
internal System.Windows.Forms.ListBox lstColors;
public BindingUnusualProperties()
{
this.Label2 = new System.Windows.Forms.Label();
this.Label1 = new System.Windows.Forms.Label();
this.lstFonts = new System.Windows.Forms.ListBox();
this.lblSampleText = new System.Windows.Forms.Label();
this.lstColors = new System.Windows.Forms.ListBox();
this.SuspendLayout();
this.Label2.Location = new System.Drawing.Point(210, 13);
this.Label2.Size = new System.Drawing.Size(140, 12);
this.Label2.Text = "Choose a Font:";
this.Label1.Location = new System.Drawing.Point(14, 13);
this.Label1.Size = new System.Drawing.Size(140, 12);
this.Label1.Text = "Choose a Color:";
this.lstFonts.Location = new System.Drawing.Point(210, 29);
this.lstFonts.Size = new System.Drawing.Size(180, 134);
this.lblSampleText.Anchor = (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right);
this.lblSampleText.Location = new System.Drawing.Point(18, 185);
this.lblSampleText.Name = "lblSampleText";
this.lblSampleText.Size = new System.Drawing.Size(372, 96);
this.lblSampleText.TabIndex = 6;
this.lblSampleText.Text = "Click an item in one of the lists above to change the font or color of this text." +
" Once the initial conditions are set up (i.e., the binding), this operation happ" +
"ens automatically.";
this.lstColors.Location = new System.Drawing.Point(14, 29);
this.lstColors.Size = new System.Drawing.Size(176, 134);
this.AutoScaleBaseSize = new System.Drawing.Size(5, 14);
this.ClientSize = new System.Drawing.Size(404, 294);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.Label2,
this.Label1,
this.lstFonts,
this.lblSampleText,
this.lstColors});
this.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
this.Name = "BindingUnusualProperties";
this.Text = "Binding Unusual Properties";
this.Load += new System.EventHandler(this.BindingUnusualProperties_Load);
this.ResumeLayout(false);
}
private void BindingUnusualProperties_Load(object sender, System.EventArgs e)
{
ArrayList fontObjList = new ArrayList();
ArrayList colorObjList = new ArrayList();
InstalledFontCollection InstalledFonts = new InstalledFontCollection();
foreach (FontFamily family in InstalledFonts.Families)
{
try
{
fontObjList.Add(new Font(family, 12));
}
catch
{
}
}
string[] colorNames;
colorNames = System.Enum.GetNames(typeof(KnownColor));
TypeConverter cnvrt = TypeDescriptor.GetConverter(typeof(KnownColor));
foreach (string colorName in colorNames)
{
colorObjList.Add(Color.FromKnownColor((KnownColor)cnvrt.ConvertFromString(colorName)));
}
// We can now bind both our list controls.
lstColors.DataSource = colorObjList;
lstColors.DisplayMember = "Name";
lstFonts.DataSource = fontObjList;
lstFonts.DisplayMember = "Name";
// The label is bound to both data sources.
lblSampleText.DataBindings.Add("ForeColor", colorObjList, "");
lblSampleText.DataBindings.Add("Font", fontObjList, "");
}
[STAThread]
static void Main()
{
Application.Run(new BindingUnusualProperties());
}
}
}
|