Csharp/C Sharp/GUI Windows Form/ComboBox — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
|
(нет различий)
|
Версия 18:31, 26 мая 2010
Содержание
Add items to combo box
<source lang="csharp"> using System; using System.Drawing; using System.Windows.Forms; public class Select : Form {
private Button draw = new Button(); private ComboBox color = new ComboBox(); public Select( ) { draw.Text = "Draw"; color.Text = "Choose a color"; Size = new Size(500,250); int w = 20; draw.Location = new Point(20,30); color.Location = new Point(w += 10 + color.Width, 30); color.Items.Add("Red"); color.Items.Add("Green"); color.Items.Add("Blue"); Controls.Add(draw); Controls.Add(color); draw.Click += new EventHandler(Draw_Click); } protected void Draw_Click(Object sender, EventArgs e) { if (color.SelectedItem.ToString() == "Red" ) Console.WriteLine("It is red."); else if (color.SelectedItem.ToString() == "Green") Console.WriteLine("It is green."); else Console.WriteLine("It is blue."); } static void Main() { Application.Run(new Select()); }
}
</source>
ComboBox Selected Item changed event
<source lang="csharp"> using System; using System.Drawing; using System.Windows.Forms; public class SelectItem : Form {
private RadioButton square = new RadioButton(); private RadioButton circle = new RadioButton(); private ComboBox color = new ComboBox(); public SelectItem( ) { Text = "Select Item"; square.Text = "Square"; circle.Text = "Circle"; color.Text = "Choose a color"; Size = new Size(400,250); int w = 20; square.Location = new Point(w, 30); circle.Location = new Point(w += 10 + square.Width, 30); color.Location = new Point(w += 10 + circle.Width, 30); color.Items.Add("Red"); color.Items.Add("Green"); color.Items.Add("Blue"); Controls.Add(square); Controls.Add(circle); Controls.Add(color); square.CheckedChanged += new EventHandler(Checked_Changed); circle.CheckedChanged += new EventHandler(Checked_Changed); color.SelectedIndexChanged += new EventHandler(Selected_Index); } protected void Selected_Index(Object sender, EventArgs e) { if (color.SelectedItem.ToString() == "Red" ) Console.WriteLine("It is red."); else if (color.SelectedItem.ToString() == "Green") Console.WriteLine("It is green."); else Console.WriteLine("It is Blue"); } protected void Checked_Changed(Object sender, EventArgs e) { if (square.Checked) Console.WriteLine("It is rectangle"); else Console.WriteLine("Ellipse"); } static void Main() { Application.Run(new SelectItem()); }
}
</source>
ComboBox selected Item changed event 1
<source lang="csharp"> using System; using System.Collections.Generic; using System.ruponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; public class Form1 : Form {
private System.Windows.Forms.GroupBox groupBox1; private System.Windows.Forms.ruboBox lstFonts; private System.Windows.Forms.Label label1; private System.Windows.Forms.StatusStrip statusBar; private System.Windows.Forms.ToolStripStatusLabel statusLabel; public Form1() { InitializeComponent(); System.Drawing.Text.InstalledFontCollection fonts = new System.Drawing.Text.InstalledFontCollection(); foreach (FontFamily family in fonts.Families) { lstFonts.Items.Add(family.Name); } } private void lstFonts_SelectedIndexChanged(object sender, EventArgs e) { this.Invalidate(); } private void Form1_Paint(object sender, PaintEventArgs e) { if (lstFonts.SelectedIndex != -1) { e.Graphics.DrawString(lstFonts.Text, new Font(lstFonts.Text, 50), Brushes.Black, 10, 50); statusBar.Items[0].Text = lstFonts.Text; } } private void InitializeComponent() { this.groupBox1 = new System.Windows.Forms.GroupBox(); this.lstFonts = new System.Windows.Forms.ruboBox(); this.label1 = new System.Windows.Forms.Label(); this.statusBar = new System.Windows.Forms.StatusStrip(); this.statusLabel = new System.Windows.Forms.ToolStripStatusLabel(); this.groupBox1.SuspendLayout(); this.statusBar.SuspendLayout(); this.SuspendLayout(); // // groupBox1 // this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.groupBox1.Controls.Add(this.lstFonts); this.groupBox1.Controls.Add(this.label1); this.groupBox1.Location = new System.Drawing.Point(7, 0); this.groupBox1.Name = "groupBox1"; this.groupBox1.Size = new System.Drawing.Size(497, 40); this.groupBox1.TabIndex = 1; this.groupBox1.TabStop = false; // // lstFonts // this.lstFonts.DropDownStyle = System.Windows.Forms.ruboBoxStyle.DropDownList; this.lstFonts.DropDownWidth = 340; this.lstFonts.FormattingEnabled = true; this.lstFonts.Location = new System.Drawing.Point(100, 12); this.lstFonts.Name = "lstFonts"; this.lstFonts.Size = new System.Drawing.Size(340, 21); this.lstFonts.TabIndex = 1; this.lstFonts.SelectedIndexChanged += new System.EventHandler(this.lstFonts_SelectedIndexChanged); // // label1 // this.label1.Location = new System.Drawing.Point(12, 16); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(80, 12); this.label1.TabIndex = 0; this.label1.Text = "Choose Font:"; // // statusBar // this.statusBar.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.statusLabel}); this.statusBar.LayoutStyle = System.Windows.Forms.ToolStripLayoutStyle.Table; this.statusBar.Location = new System.Drawing.Point(0, 155); this.statusBar.Name = "statusBar"; this.statusBar.Size = new System.Drawing.Size(516, 22); this.statusBar.TabIndex = 2; this.statusBar.Text = "statusStrip1"; // // statusLabel // this.statusLabel.Name = "statusLabel"; // // Form1 // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(516, 177); this.Controls.Add(this.groupBox1); this.Controls.Add(this.statusBar); this.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.Text = "Font Viewer"; this.Load += new System.EventHandler(this.Form1_Load); this.groupBox1.ResumeLayout(false); this.statusBar.ResumeLayout(false); this.ResumeLayout(false); this.PerformLayout(); } [STAThread] static void Main() { Application.EnableVisualStyles(); Application.Run(new Form1()); }
}
</source>
ComboBox selected item changed event 2
<source lang="csharp"> using System; using System.Drawing; using System.Windows.Forms;
public class Test : Form {
private RadioButton square = new RadioButton(); private RadioButton circle = new RadioButton(); private ComboBox color = new ComboBox(); private Color c = Color.Red; public Test( ) { Text = "Select Item"; square.Text = "Square"; circle.Text = "Circle"; color.Text = "Choose a color"; Size = new Size(400,250); int w = 20; square.Location = new Point(w, 30); circle.Location = new Point(w += 10 + square.Width, 30); color.Location = new Point(w += 10 + circle.Width, 30); color.Items.Add("Red"); color.Items.Add("Green"); color.Items.Add("Blue"); Controls.Add(square); Controls.Add(circle); Controls.Add(color); square.CheckedChanged += new EventHandler(Checked_Changed); circle.CheckedChanged += new EventHandler(Checked_Changed); color.SelectedIndexChanged += new EventHandler(Selected_Index); } protected override void OnPaint(PaintEventArgs e){ Graphics g = e.Graphics; Brush brush = new SolidBrush(c); if (square.Checked) g.FillRectangle(brush,100,100,100,100); else g.FillEllipse(brush,100,100,100,100); base.OnPaint( e ); } protected void Selected_Index(Object sender, EventArgs e){ if (color.SelectedItem.ToString() == "Red" ) c = Color.Red; else if (color.SelectedItem.ToString() == "Green") c = Color.Green; else c = Color.Blue; Invalidate(); } protected void Checked_Changed(Object sender, EventArgs e) { Invalidate(); } static void Main() { Application.Run(new Test()); }
}
</source>
ComboBox with color cell renderer
<source lang="csharp"> /* Professional Windows GUI Programming Using C# by Jay Glynn, Csaba Torok, Richard Conway, Wahid Choudhury,
Zach Greenvoss, Shripad Kulkarni, Neil Whitlow
Publisher: Peer Information ISBN: 1861007663
- /
using System; using System.Drawing; using System.Collections; using System.ruponentModel; using System.Windows.Forms; using System.Data; namespace MyComboBox {
/// <summary> /// Summary description for MyComboBox. /// </summary> public class MyComboBox : System.Windows.Forms.Form { private System.Windows.Forms.ruboBox comboBox1; private System.Windows.Forms.Label label1; private System.Windows.Forms.ruboBox comboBox2; private System.Windows.Forms.Label label2; ArrayList colorArray = new ArrayList() ; ArrayList fontArray = new ArrayList() ; /// <summary> /// Required designer variable. /// </summary> private System.ruponentModel.Container components = null; public MyComboBox() { // // Required for Windows Form Designer support // InitializeComponent(); // // TODO: Add any constructor code after InitializeComponent call // } /// <summary> /// Clean up any resources being used. /// </summary> protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); } #region Windows Form Designer generated code /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { this.ruboBox1 = new System.Windows.Forms.ruboBox(); this.label1 = new System.Windows.Forms.Label(); this.ruboBox2 = new System.Windows.Forms.ruboBox(); this.label2 = new System.Windows.Forms.Label(); this.SuspendLayout(); // // comboBox1 // this.ruboBox1.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawVariable; this.ruboBox1.ItemHeight = 25; this.ruboBox1.Location = new System.Drawing.Point(16, 40); this.ruboBox1.Name = "comboBox1"; this.ruboBox1.Size = new System.Drawing.Size(264, 31); this.ruboBox1.TabIndex = 0; this.ruboBox1.SelectedIndexChanged += new System.EventHandler(this.MyItemSelected); this.ruboBox1.MeasureItem += new System.Windows.Forms.MeasureItemEventHandler(this.ruboBox1_MeasureItem); this.ruboBox1.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.ruboBox1_DrawItem); // // label1 // this.label1.Location = new System.Drawing.Point(16, 16); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(100, 16); this.label1.TabIndex = 1; this.label1.Text = "Font Combo Box"; // // comboBox2 // this.ruboBox2.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; this.ruboBox2.DropDownStyle = System.Windows.Forms.ruboBoxStyle.DropDownList; this.ruboBox2.ItemHeight = 20; this.ruboBox2.Location = new System.Drawing.Point(16, 104); this.ruboBox2.Name = "comboBox2"; this.ruboBox2.Size = new System.Drawing.Size(264, 26); this.ruboBox2.TabIndex = 0; this.ruboBox2.SelectedIndexChanged += new System.EventHandler(this.MyItemSelected); this.ruboBox2.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.ruboBox2_DrawItem); // // label2 // this.label2.Location = new System.Drawing.Point(24, 80); this.label2.Name = "label2"; this.label2.TabIndex = 2; this.label2.Text = "Color Combo Box"; // // MyComboBox // this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(312, 157); this.Controls.AddRange(new System.Windows.Forms.Control[] { this.label2, this.label1, this.ruboBox1, this.ruboBox2}); this.Name = "MyComboBox"; this.Text = "OwnerDraw ComboBox"; this.Load += new System.EventHandler(this.MyComboBox_Load); this.ResumeLayout(false); } #endregion /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() { Application.Run(new MyComboBox()); } private void MyComboBox_Load(object sender, System.EventArgs e) { // Fill an array with the different color you wish // to display in the ComboBox colorArray.Add(new SolidBrush(Color.Yellow)); colorArray.Add(new SolidBrush(Color.Black)); colorArray.Add(new SolidBrush(Color.Azure)); colorArray.Add(new SolidBrush(Color.Firebrick)); colorArray.Add(new SolidBrush(Color.DarkMagenta)); // Add blank items to the list, since the text we will display // will be the name of the Color we are painting comboBox2.Items.Add(""); comboBox2.Items.Add(""); comboBox2.Items.Add(""); comboBox2.Items.Add(""); comboBox2.Items.Add(""); // Fill an array with the different fonts that you will use to display // items in the other comboBox fontArray .Add(new Font("Ariel" , 15 , FontStyle.Bold )); fontArray .Add(new Font("Courier" , 12 , FontStyle.Italic)); fontArray .Add(new Font("Veranda" , 14 , FontStyle.Bold)); fontArray .Add(new Font("System" , 10 , FontStyle.Strikeout)); fontArray .Add(new Font("Century SchoolBook" , 15 , FontStyle.Underline)); // Add the items that in the listBox comboBox1.Items.Add("Washington"); comboBox1.Items.Add("Houston"); comboBox1.Items.Add("Phoenix"); comboBox1.Items.Add("Dallas"); comboBox1.Items.Add("London"); } private void comboBox1_DrawItem(object sender, System.Windows.Forms.DrawItemEventArgs e) { // Override this function to draw items in the Font comboBox // Get the Graphics Object (aka. CDC or Device Context Object ) // passed via the DrawItemEventArgs parameter Graphics g = e.Graphics ; // Get the bounding rectangle of the item currently being painted Rectangle r = e.Bounds ; Font fn = null ; if ( e.Index >= 0 ) { // Get the Font object, at the specifid index in the fontArray fn = (Font)fontArray[e.Index]; // Get the text that we wish to display string s = (string)comboBox1.Items[e.Index]; // Set the string format options StringFormat sf = new StringFormat(); sf.Alignment = StringAlignment.Near; Console.WriteLine(e.State.ToString()); // Draw the rectangle e.Graphics.DrawRectangle(new Pen(new SolidBrush(Color.Black), 2 ), r ); if ( e.State == ( DrawItemState.NoAccelerator | DrawItemState.NoFocusRect)) { // if the item is not selected draw it with a different color e.Graphics.FillRectangle(new SolidBrush(Color.White) , r); e.Graphics.DrawString( s , fn , new SolidBrush(Color.Black), r ,sf); e.DrawFocusRectangle(); } else { // if the item is selected draw it with a different color e.Graphics.FillRectangle(new SolidBrush(Color.LightBlue) , r); e.Graphics.DrawString( s , fn , new SolidBrush(Color.Red), r ,sf); e.DrawFocusRectangle(); } } } private void comboBox2_DrawItem(object sender, System.Windows.Forms.DrawItemEventArgs e) { // Override this function to draw items in the Color comboBox // Get the Graphics Object (aka. CDC or Device Context Object ) // passed via the DrawItemEventArgs parameter Graphics g = e.Graphics ; // Get the bounding rectangle of the item currently being painted Rectangle r = e.Bounds ; if ( e.Index >= 0 ) { Rectangle rd = r ; rd.Width = 100 ; Rectangle rt = r ; r.Left = rd.Right ; // Get the brush object, at the specifid index in the colorArray SolidBrush b = (SolidBrush)colorArray[e.Index]; // Fill a portion of the rectangle with the selected brush g.FillRectangle(b , rd); // Set the string format options StringFormat sf = new StringFormat(); sf.Alignment = StringAlignment.Near; Console.WriteLine(e.State.ToString()); // Draw the rectangle e.Graphics.DrawRectangle(new Pen(new SolidBrush(Color.Black), 2 ), r ); if ( e.State == ( DrawItemState.NoAccelerator | DrawItemState.NoFocusRect)) { // if the item is not selected draw it with a different color e.Graphics.FillRectangle(new SolidBrush(Color.White) , r); e.Graphics.DrawString( b.Color.Name, new Font("Ariel" , 8 , FontStyle.Bold ) , new SolidBrush(Color.Black), r ,sf); e.DrawFocusRectangle(); } else { // if the item is selected draw it with a different color e.Graphics.FillRectangle(new SolidBrush(Color.LightBlue) , r); e.Graphics.DrawString( b.Color.Name, new Font("Veranda" , 12 , FontStyle.Bold ) , new SolidBrush(Color.Red), r ,sf); e.DrawFocusRectangle(); } } } private void MyItemSelected(object sender, System.EventArgs e) { // UnBox the sender. Since both the ComboBox controls use the same // events to handle the selection of item from the list ComboBox cb = null ; if ( sender.Equals(comboBox1)) cb = comboBox1; else cb = comboBox2; // Get the index of the Item Selected int x = cb.SelectedIndex ; string str = ""; // Get the Text of the item selected if ( sender.Equals(comboBox1)) { str = "Item Selected is = " + (string)cb.Items[x]; } else { SolidBrush br = (SolidBrush)colorArray[x]; str = "Color Selected is = " + br.Color.Name; } MessageBox.Show(str,"ComboBox Item"); } private void comboBox1_MeasureItem(object sender, System.Windows.Forms.MeasureItemEventArgs e) { // For the comboBox with OwnerDrawVariable property // Display every second item with a height of 45 if ( e.Index%2 == 0 ) { e.ItemHeight = 45 ; e.ItemWidth = 20 ; } else { // Display all other items with a height of 25 e.ItemHeight = 25 ; e.ItemWidth = 10 ; } } }
}
</source>
<A href="http://www.nfex.ru/Code/CSharpDownload/ComboBox.zip">ComboBox.zip( 65 k)</a>
Get Selected item from ComboBox
<source lang="csharp"> using System; using System.Drawing; using System.Windows.Forms; public class Select : Form {
private Button draw = new Button(); private ComboBox color = new ComboBox(); public Select( ) { draw.Text = "Draw"; color.Text = "Choose a color"; Size = new Size(500,250); int w = 20; draw.Location = new Point(20,30); color.Location = new Point(w += 10 + color.Width, 30); color.Items.Add("Red"); color.Items.Add("Green"); color.Items.Add("Blue"); Controls.Add(draw); Controls.Add(color); draw.Click += new EventHandler(Draw_Click); } protected void Draw_Click(Object sender, EventArgs e) { if (color.SelectedItem.ToString() == "Red" ) Console.WriteLine("It is red."); else if (color.SelectedItem.ToString() == "Green") Console.WriteLine("It is green."); else Console.WriteLine("It is blue."); } static void Main() { Application.Run(new Select()); }
}
</source>
WindowsXP controls
<source lang="csharp"> /* 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.ruponentModel; using System.Windows.Forms; using System.Data; namespace WindowsXP {
/// <summary> /// Summary description for WindowsXP. /// </summary> public class WindowsXP : System.Windows.Forms.Form { internal System.Windows.Forms.HScrollBar HScrollBar1; internal System.Windows.Forms.ProgressBar ProgressBar1; internal System.Windows.Forms.TrackBar TrackBar1; internal System.Windows.Forms.ruboBox ComboBox1; internal System.Windows.Forms.RadioButton RadioButton1; internal System.Windows.Forms.CheckBox CheckBox1; internal System.Windows.Forms.Button Button1; /// <summary> /// Required designer variable. /// </summary> private System.ruponentModel.Container components = null; public WindowsXP() { // // Required for Windows Form Designer support // InitializeComponent(); // // TODO: Add any constructor code after InitializeComponent call // } /// <summary> /// Clean up any resources being used. /// </summary> protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); } #region Windows Form Designer generated code /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { this.HScrollBar1 = new System.Windows.Forms.HScrollBar(); this.ProgressBar1 = new System.Windows.Forms.ProgressBar(); this.TrackBar1 = new System.Windows.Forms.TrackBar(); this.ruboBox1 = new System.Windows.Forms.ruboBox(); this.RadioButton1 = new System.Windows.Forms.RadioButton(); this.CheckBox1 = new System.Windows.Forms.CheckBox(); this.Button1 = new System.Windows.Forms.Button(); ((System.ruponentModel.ISupportInitialize)(this.TrackBar1)).BeginInit(); this.SuspendLayout(); // // HScrollBar1 // this.HScrollBar1.Location = new System.Drawing.Point(24, 256); this.HScrollBar1.Name = "HScrollBar1"; this.HScrollBar1.Size = new System.Drawing.Size(240, 20); this.HScrollBar1.TabIndex = 15; // // ProgressBar1 // this.ProgressBar1.Location = new System.Drawing.Point(24, 216); this.ProgressBar1.Name = "ProgressBar1"; this.ProgressBar1.Size = new System.Drawing.Size(128, 23); this.ProgressBar1.TabIndex = 14; this.ProgressBar1.Value = 30; // // TrackBar1 // this.TrackBar1.Location = new System.Drawing.Point(16, 152); this.TrackBar1.Name = "TrackBar1"; this.TrackBar1.Size = new System.Drawing.Size(164, 45); this.TrackBar1.TabIndex = 13; // // ComboBox1 // this.ruboBox1.Location = new System.Drawing.Point(24, 116); this.ruboBox1.Name = "ComboBox1"; this.ruboBox1.Size = new System.Drawing.Size(160, 21); this.ruboBox1.TabIndex = 12; this.ruboBox1.Text = "ComboBox1"; // // RadioButton1 // this.RadioButton1.FlatStyle = System.Windows.Forms.FlatStyle.System; this.RadioButton1.Location = new System.Drawing.Point(24, 88); this.RadioButton1.Name = "RadioButton1"; this.RadioButton1.Size = new System.Drawing.Size(172, 16); this.RadioButton1.TabIndex = 11; this.RadioButton1.Text = "RadioButton1"; // // CheckBox1 // this.CheckBox1.FlatStyle = System.Windows.Forms.FlatStyle.System; this.CheckBox1.Location = new System.Drawing.Point(24, 56); this.CheckBox1.Name = "CheckBox1"; this.CheckBox1.Size = new System.Drawing.Size(160, 20); this.CheckBox1.TabIndex = 10; this.CheckBox1.Text = "CheckBox1"; // // Button1 // this.Button1.FlatStyle = System.Windows.Forms.FlatStyle.System; this.Button1.Location = new System.Drawing.Point(24, 12); this.Button1.Name = "Button1"; this.Button1.Size = new System.Drawing.Size(104, 28); this.Button1.TabIndex = 9; this.Button1.Text = "Button1"; // // WindowsXP // this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(292, 298); this.Controls.AddRange(new System.Windows.Forms.Control[] { this.HScrollBar1, this.ProgressBar1, this.TrackBar1, this.ruboBox1, this.RadioButton1, this.CheckBox1, this.Button1}); this.Name = "WindowsXP"; this.Text = "Windows XP Controls"; ((System.ruponentModel.ISupportInitialize)(this.TrackBar1)).EndInit(); this.ResumeLayout(false); } #endregion /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() { Application.Run(new WindowsXP()); } }
}
</source>