Csharp/C Sharp/GUI Windows Form/Control
Содержание
Add a Control Programmatically
using System;
using System.Windows.Forms;
public class DynamicCheckBox : System.Windows.Forms.Form {
public DynamicCheckBox(){
string[] foods = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L"};
int topPosition = 10;
foreach (string food in foods)
{
// Create a new check box.
CheckBox checkBox = new CheckBox();
checkBox.Left = 10;
checkBox.Top = topPosition;
topPosition += 30;
checkBox.Text = food;
// Add the check box to the form.
this.Controls.Add(checkBox);
}
}
public static void Main(){
Application.Run(new DynamicCheckBox());
}
}
Change Image alignment inside a Control
using System;
using System.Drawing;
using System.Collections;
using System.ruponentModel;
using System.Windows.Forms;
using System.Data;
public class ButtonForm : System.Windows.Forms.Form
{
private System.Windows.Forms.Button btnImage;
private System.Windows.Forms.Button btnStandard;
// Hold the current text alignment
ContentAlignment currAlignment = ContentAlignment.MiddleCenter;
int currEnumPos = 0;
public ButtonForm()
{
InitializeComponent();
// Set btnStandard as default accept.
this.AcceptButton = btnStandard;
CenterToScreen();
}
private void InitializeComponent()
{
this.btnStandard = new System.Windows.Forms.Button();
this.btnImage = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// btnStandard
//
this.btnStandard.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F);
this.btnStandard.ForeColor = System.Drawing.SystemColors.ControlText;
this.btnStandard.Location = new System.Drawing.Point(16, 80);
this.btnStandard.Name = "btnStandard";
this.btnStandard.Size = new System.Drawing.Size(312, 88);
this.btnStandard.TabIndex = 2;
this.btnStandard.Text = "Click to change the Image alignment";
this.btnStandard.Click += new System.EventHandler(this.btnStandard_Click);
//
// btnImage
//
this.btnImage.Font = new System.Drawing.Font("Microsoft Sans Serif", 20F, System.Drawing.FontStyle.Bold);
this.btnImage.Image = new Bitmap("winter.jpg");
this.btnImage.Location = new System.Drawing.Point(16, 192);
this.btnImage.Name = "btnImage";
this.btnImage.Size = new System.Drawing.Size(312, 72);
this.btnImage.TabIndex = 3;
this.btnImage.Text = "Image Button";
this.btnImage.TextAlign = System.Drawing.ContentAlignment.TopCenter;
//
// ButtonForm
//
this.AcceptButton = this.btnStandard;
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(340, 269);
this.Controls.AddRange(new System.Windows.Forms.Control[] {this.btnImage,
this.btnStandard,
});
this.ForeColor = System.Drawing.SystemColors.ActiveCaptionText;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D;
this.Name = "ButtonForm";
this.Text = "Buttons";
this.ResumeLayout(false);
}
protected void btnStandard_Click (object sender, System.EventArgs e)
{
Array values = Enum.GetValues(currAlignment.GetType());
currEnumPos++;
if(currEnumPos >= values.Length)
currEnumPos = 0;
currAlignment = (ContentAlignment)ContentAlignment.Parse(currAlignment.GetType(),
values.GetValue(currEnumPos).ToString());
btnImage.ImageAlign = currAlignment;
}
public static void Main(string[] args)
{
Application.Run(new ButtonForm());
}
}
Control Enabled
using System;
using System.Drawing;
using System.Windows.Forms;
class MainWindow : Form {
private TextBox firstNameBox = new TextBox();
private Button btnShowControls = new Button();
public MainWindow() {
this.Text = "Simple Controls";
this.Width = 300;
this.Height = 200;
CenterToScreen();
firstNameBox.Text = "Hello";
firstNameBox.Size = new Size(150, 50);
firstNameBox.Location = new Point(10, 10);
this.Controls.Add(firstNameBox);
btnShowControls.Text = "Click Me";
btnShowControls.Size = new Size(90, 30);
btnShowControls.Location = new Point(10, 70);
btnShowControls.BackColor = Color.DodgerBlue;
btnShowControls.Click += new EventHandler(btnShowControls_Clicked);
this.Controls.Add(btnShowControls);
}
private void btnShowControls_Clicked(object sender, EventArgs e) {
string ctrlInfo = "";
foreach (Control c in this.Controls) {
ctrlInfo += string.Format("Control: {0}\n",c.ToString());
}
MessageBox.Show(ctrlInfo, "Controls on Form");
DisableAllButtons();
}
private void DisableAllButtons() {
foreach (Control c in this.Controls) {
if (c is Button)
((Button)c).Enabled = false;
}
}
public static void Main(string[] args) {
Application.Run(new MainWindow());
}
}
Control renderer Demo: CheckBox
using System;
using System.Collections.Generic;
using System.ruponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Windows.Forms.VisualStyles;
public class Form1 : Form
{
public Form1() {
InitializeComponent();
}
private void ControlRenderer_Paint(object sender, PaintEventArgs e)
{
CheckBoxRenderer.DrawCheckBox(e.Graphics, new Point(10,10),
new Rectangle(10,10,110,15), "Style checkbox", Font,false, CheckBoxState.CheckedNormal);
}
private void InitializeComponent()
{
this.SuspendLayout();
//
// ControlRenderer
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(292, 266);
this.Name = "ControlRenderer";
this.Text = "ControlRenderer";
this.Paint += new System.Windows.Forms.PaintEventHandler(this.ControlRenderer_Paint);
this.ResumeLayout(false);
}
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new Form1());
}
}
Control style: resize and redraw
using System;
using System.Drawing;
using System.Collections;
using System.ruponentModel;
using System.Windows.Forms;
using System.Data;
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.Button btnGetStyles;
private System.ruponentModel.Container components;
public Form1()
{
InitializeComponent();
SetStyle(ControlStyles.ResizeRedraw, true);
}
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
private void InitializeComponent()
{
this.btnGetStyles = new System.Windows.Forms.Button();
this.btnGetStyles.Location = new System.Drawing.Point(24, 64);
this.btnGetStyles.Size = new System.Drawing.Size(160, 23);
this.btnGetStyles.TabIndex = 0;
this.btnGetStyles.Text = "Get Form Styles";
this.btnGetStyles.Click += new System.EventHandler(this.btnGetStyles_Click);
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(211, 104);
this.Controls.AddRange(new System.Windows.Forms.Control[] {this.btnGetStyles});
this.Text = "A Form with Style!";
}
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void btnGetStyles_Click(object sender, System.EventArgs e)
{
MessageBox.Show(GetStyle(ControlStyles.ResizeRedraw).ToString(),
"Do you have ResizeRedraw?");
}
}
Get all controls on a form window
using System;
using System.Drawing;
using System.Windows.Forms;
class MyForm : Form
{
private TextBox firstNameBox = new TextBox();
private Button btnShowControls = new Button();
MyForm()
{
this.Text = "Controls in the raw";
// Add a new text box.
firstNameBox.Text = "Chucky";
firstNameBox.Size = new Size(150, 50);
firstNameBox.Location = new Point(10, 10);
this.Controls.Add(firstNameBox);
// Add a new button.
btnShowControls.Text = "Examine Controls collection";
btnShowControls.Size = new Size(90, 90);
btnShowControls.Location = new Point(10, 70);
btnShowControls.Click +=
new EventHandler(btnShowControls_Clicked);
this.Controls.Add(btnShowControls);
CenterToScreen();
}
protected void btnShowControls_Clicked(object sender, EventArgs e)
{
Control.ControlCollection coll = this.Controls;
foreach(Control c in coll) {
if(c != null)
Console.WriteLine(c.Text, "Index numb: " + coll.GetChildIndex(c, false));
}
}
public static int Main(string[] args)
{
Application.Run(new MyForm());
return 0;
}
}
Use Control.GetType to check the control type
using System;
using System.Drawing;
using System.Windows.Forms;
class CustomCheckBox: Form
{
public static void Main()
{
Application.Run(new CustomCheckBox());
}
public CustomCheckBox()
{
int cyText = Font.Height;
int cxText = cyText / 2;
FontStyle[] afs = { FontStyle.Bold, FontStyle.Italic,
FontStyle.Underline, FontStyle.Strikeout };
Label label = new Label();
label.Parent = this;
label.Text = "Sample Text";
for (int i = 0; i < 4; i++)
{
FontStyleCheckBox chkbox = new FontStyleCheckBox();
chkbox.Parent = this;
chkbox.Text = afs[i].ToString();
chkbox.fontstyle = afs[i];
chkbox.Location = new Point(2 * cxText,
(4 + 3 * i) * cyText / 2);
chkbox.Size = new Size(12 * cxText, cyText);
chkbox.CheckedChanged += new EventHandler(CheckBoxOnCheckedChanged);
}
}
void CheckBoxOnCheckedChanged(object obj, EventArgs ea)
{
FontStyle fs = 0;
Label label = null;
for (int i = 0; i < Controls.Count; i++)
{
Control ctrl = Controls[i];
if (ctrl.GetType() == typeof(Label))
label = (Label) ctrl;
else if (ctrl.GetType() == typeof(FontStyleCheckBox))
if (((FontStyleCheckBox) ctrl).Checked)
fs |= ((FontStyleCheckBox) ctrl).fontstyle;
}
label.Font = new Font(label.Font, fs);
}
}
class FontStyleCheckBox: CheckBox
{
public FontStyle fontstyle;
}