Csharp/C Sharp/GUI Windows Form/Dialog — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
(нет различий)
|
Текущая версия на 14:32, 26 мая 2010
Содержание
A dialog by user defined property
<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; class MainClass {
public static void Main() { Phone frm = new Phone(); while (true) { frm.ShowDialog(); if (frm.DialogResult == DialogResult.OK) { Console.WriteLine(frm.PhoneNumber); if (frm.PhoneNumber.Length == 8 | frm.PhoneNumber.Length == 12) { break; } else { MessageBox.Show("Phone number was not formatted correctly. Please correct entry."); } } else if (frm.DialogResult == DialogResult.Cancel) { Console.WriteLine("Form was canceled."); break; } } frm.Close(); }
} class Phone : Form {
private System.Windows.Forms.TextBox textBox1 = new System.Windows.Forms.TextBox(); private System.Windows.Forms.Label label1 = new System.Windows.Forms.Label() ; private System.Windows.Forms.Button btnOK = new System.Windows.Forms.Button(); private System.Windows.Forms.Button btnCancel = new System.Windows.Forms.Button(); public Phone() { this.SuspendLayout(); this.textBox1.Location = new System.Drawing.Point(122, 21); this.textBox1.Margin = new System.Windows.Forms.Padding(1, 3, 3, 3); this.textBox1.Size = new System.Drawing.Size(115, 20); this.label1.AutoSize = true; this.label1.Location = new System.Drawing.Point(10, 26); this.label1.Margin = new System.Windows.Forms.Padding(3, 3, 1, 3); this.label1.Size = new System.Drawing.Size(110, 14); this.label1.Text = "Enter phone number:"; this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight; this.btnOK.DialogResult = System.Windows.Forms.DialogResult.OK; this.btnOK.Location = new System.Drawing.Point(36, 65); this.btnOK.Text = "OK"; this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; this.btnCancel.Location = new System.Drawing.Point(132, 65); this.btnCancel.Text = "Cancel"; this.ClientSize = new System.Drawing.Size(270, 107); this.Controls.Add(this.btnCancel); this.Controls.Add(this.btnOK); this.Controls.Add(this.label1); this.Controls.Add(this.textBox1); this.ResumeLayout(false); this.PerformLayout(); btnOK.DialogResult = DialogResult.OK; btnCancel.DialogResult = DialogResult.Cancel; } public string PhoneNumber { get { return textBox1.Text; } set { textBox1.Text = value; } }
}
</source>
Color Fill dialog
<source lang="csharp"> using System; using System.Drawing; using System.Windows.Forms;
class ColorFillDialogBox: Form {
GroupBox grpbox = new GroupBox(); CheckBox chkbox = new CheckBox(); public ColorFillDialogBox() { string[] astrColor = { "Black", "Blue", "Green", "Cyan", "Red", "Magenta", "Yellow", "White"}; grpbox.Parent = this; grpbox.Text = "Color"; grpbox.Location = new Point(8, 8); grpbox.Size = new Size(96, 12 * (astrColor.Length + 1)); for (int i = 0; i < astrColor.Length; i++) { RadioButton radiobtn = new RadioButton(); radiobtn.Parent = grpbox; radiobtn.Text = astrColor[i]; radiobtn.Location = new Point(8, 12 * (i + 1)); radiobtn.Size = new Size(80, 10); } chkbox.Parent = this; chkbox.Text = "Fill Ellipse"; chkbox.Location = new Point(8, grpbox.Bottom + 4); chkbox.Size = new Size(80, 10); Button btn = new Button(); btn.Parent = this; btn.Text = "OK"; btn.Location = new Point(8, chkbox.Bottom + 4); btn.Size = new Size(40, 16); btn.DialogResult = DialogResult.OK; AcceptButton = btn; btn = new Button(); btn.Parent = this; btn.Text = "Cancel"; btn.Location = new Point(64, chkbox.Bottom + 4); btn.Size = new Size(40, 16); btn.DialogResult = DialogResult.Cancel; CancelButton = btn; ClientSize = new Size(112, btn.Bottom + 8); AutoScaleBaseSize = new Size(4, 8); } public Color Color { get { for (int i = 0; i < grpbox.Controls.Count; i++) { RadioButton radiobtn = (RadioButton) grpbox.Controls[i]; if (radiobtn.Checked) return Color.FromName(radiobtn.Text); } return Color.Black; } set { for (int i = 0; i < grpbox.Controls.Count; i++) { RadioButton radiobtn = (RadioButton) grpbox.Controls[i]; if (value == Color.FromName(radiobtn.Text)) { radiobtn.Checked = true; break; } } } } public bool Fill { get { return chkbox.Checked; } set { chkbox.Checked = value; } }
}
class DrawOrFillEllipse: Form {
Color colorEllipse = Color.Red; bool bFillEllipse = false; public static void Main() { Application.Run(new DrawOrFillEllipse()); } public DrawOrFillEllipse() { ResizeRedraw = true; Menu = new MainMenu(); Menu.MenuItems.Add("&Options"); Menu.MenuItems[0].MenuItems.Add("&Color...", new EventHandler(MenuColorOnClick)); } void MenuColorOnClick(object obj, EventArgs ea) { ColorFillDialogBox dlg = new ColorFillDialogBox(); dlg.Color = colorEllipse; dlg.Fill = bFillEllipse; if (dlg.ShowDialog() == DialogResult.OK) { colorEllipse = dlg.Color; bFillEllipse = dlg.Fill; Invalidate(); } } protected override void OnPaint(PaintEventArgs pea) { Graphics grfx = pea.Graphics; Rectangle rect = new Rectangle(0, 0, 50, 50); if(bFillEllipse) grfx.FillEllipse(new SolidBrush(colorEllipse), rect); else grfx.DrawEllipse(new Pen(colorEllipse), rect); }
}
</source>
Color Scroll Dialog Box
<source lang="csharp"> using System; using System.Drawing; using System.Windows.Forms;
class ColorScrollDialogBox: Form {
Label[] alabelName = new Label[3]; Label[] alabelValue = new Label[3]; VScrollBar[] avscroll = new VScrollBar[3]; public event EventHandler Changed; public ColorScrollDialogBox() { Color[] acolor = { Color.Red, Color.Green, Color.Blue }; for (int i = 0; i < 3; i++) { alabelName[i] = new Label(); alabelName[i].Parent = this; alabelName[i].ForeColor = acolor[i]; alabelName[i].Text = "&" + acolor[i].ToKnownColor(); alabelName[i].TextAlign = ContentAlignment.MiddleCenter; avscroll[i] = new VScrollBar(); avscroll[i].Parent = this; avscroll[i].SmallChange = 1; avscroll[i].LargeChange = 16; avscroll[i].Minimum = 0; avscroll[i].Maximum = 255 + avscroll[i].LargeChange - 1; avscroll[i].ValueChanged += new EventHandler(ScrollOnValueChanged); avscroll[i].TabStop = true; alabelValue[i] = new Label(); alabelValue[i].Parent = this; alabelValue[i].TextAlign = ContentAlignment.MiddleCenter; } OnResize(EventArgs.Empty); } public Color Color { get { return Color.FromArgb(avscroll[0].Value, avscroll[1].Value, avscroll[2].Value); } set { avscroll[0].Value = value.R; avscroll[1].Value = value.G; avscroll[2].Value = value.B; } } protected override void OnResize(EventArgs ea) { base.OnResize(ea); int cx = ClientSize.Width; int cy = ClientSize.Height; int cyFont = Font.Height; for (int i = 0; i < 3; i++) { alabelName[i].Location = new Point(i * cx / 3, cyFont / 2); alabelName[i].Size = new Size(cx / 3, cyFont); avscroll[i].Location = new Point((4 * i + 1) * cx / 12,2 * cyFont); avscroll[i].Size = new Size(cx / 6, cy - 4 * cyFont); alabelValue[i].Location = new Point(i * cx / 3,cy - 3 * cyFont / 2); alabelValue[i].Size = new Size(cx / 3, cyFont); } } void ScrollOnValueChanged(Object obj, EventArgs ea) { for (int i = 0; i < 3; i++) if((VScrollBar) obj == avscroll[i]) alabelValue[i].Text = avscroll[i].Value.ToString(); if (Changed != null) Changed(this, new EventArgs()); }
}
class ModelessColorScroll: Form {
public static void Main() { Application.Run(new ModelessColorScroll()); } public ModelessColorScroll() { ColorScrollDialogBox dlg = new ColorScrollDialogBox(); dlg.Owner = this; dlg.Color = BackColor; dlg.Changed += new EventHandler(ColorScrollOnChanged); dlg.Show(); } void ColorScrollOnChanged(object obj, EventArgs ea) { ColorScrollDialogBox dlg = (ColorScrollDialogBox) obj; BackColor = dlg.Color; }
}
</source>
Define your own dialog box and get user input
<source lang="csharp">
using System; using System.Resources; using System.Drawing; using System.Collections; using System.Windows.Forms; using System.Resources; class Test { static void Main(string[] args) { SomeCustomForm myForm = new SomeCustomForm(); myForm.Message = "Message"; myForm.ShowDialog(new Form()); if(myForm.DialogResult == DialogResult.OK) { Console.WriteLine(myForm.Message); } } } public class SomeCustomForm : System.Windows.Forms.Form { private System.ruponentModel.Container components; private System.Windows.Forms.Button btnCancel; private System.Windows.Forms.Button btnOK; private System.Windows.Forms.Label label1; private System.Windows.Forms.TextBox txtMessage; public SomeCustomForm() { InitializeComponent(); this.StartPosition = FormStartPosition.CenterParent; } private string strMessage; public string Message { get{ return strMessage;} set { strMessage = value; txtMessage.Text = strMessage; } }
protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); }
#region Windows Form Designer generated code private void InitializeComponent() { this.ruponents = new System.ruponentModel.Container (); this.label1 = new System.Windows.Forms.Label (); this.btnOK = new System.Windows.Forms.Button (); this.btnCancel = new System.Windows.Forms.Button (); this.txtMessage = new System.Windows.Forms.TextBox (); label1.Location = new System.Drawing.Point (12, 8); label1.Text = "Type in your message."; label1.Size = new System.Drawing.Size (240, 48); label1.TabIndex = 1; btnOK.Location = new System.Drawing.Point (16, 104); btnOK.DialogResult = System.Windows.Forms.DialogResult.OK; btnOK.Size = new System.Drawing.Size (96, 24); btnOK.TabIndex = 2; btnOK.Text = "OK"; btnOK.Click += new System.EventHandler (this.btnOK_Click); btnCancel.Location = new System.Drawing.Point (152, 104); btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; btnCancel.Size = new System.Drawing.Size (96, 24); btnCancel.TabIndex = 3; btnCancel.Text = "Cancel"; txtMessage.Location = new System.Drawing.Point (16, 72); txtMessage.TabIndex = 0; txtMessage.Size = new System.Drawing.Size (232, 20); this.Text = "Some Custom Dialog"; this.MaximizeBox = false; this.AutoScaleBaseSize = new System.Drawing.Size (5, 13); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; this.ControlBox = false; this.MinimizeBox = false; this.ClientSize = new System.Drawing.Size (266, 151); this.Controls.Add (this.btnCancel); this.Controls.Add (this.btnOK); this.Controls.Add (this.label1); this.Controls.Add (this.txtMessage); } #endregion protected void btnOK_Click (object sender, System.EventArgs e) { // OK button clicked. // get new message. strMessage = txtMessage.Text; } }
</source>
Italic User Message Dialog: your own dialog
<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 ItalicUserMessageDialog : UserMessageDialog {
public ItalicUserMessageDialog() { InitializeComponent(); } public bool Italic { set { checkBoxItalic.Checked = value; } get { return checkBoxItalic.Checked; } } private void InitializeComponent() { this.checkBoxItalic = new System.Windows.Forms.CheckBox(); this.SuspendLayout(); this.checkBoxItalic.AutoSize = true; this.checkBoxItalic.Location = new System.Drawing.Point(12, 79); this.checkBoxItalic.Size = new System.Drawing.Size(50, 17); this.checkBoxItalic.Text = "Italic?"; this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(352, 113); this.Controls.Add(this.checkBoxItalic); this.ResumeLayout(false); this.PerformLayout(); } private System.Windows.Forms.CheckBox checkBoxItalic;
} public class UserMessageDialog : Form {
public UserMessageDialog() { InitializeComponent(); } public string Message { set { txtUserInput.Text = value; } get { return txtUserInput.Text; } } private void InitializeComponent() { this.btnCancel = new System.Windows.Forms.Button(); this.btnOK = new System.Windows.Forms.Button(); this.label1 = new System.Windows.Forms.Label(); this.txtUserInput = new System.Windows.Forms.TextBox(); this.SuspendLayout(); this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; this.btnCancel.Location = new System.Drawing.Point(263, 73); this.btnCancel.Size = new System.Drawing.Size(75, 23); this.btnCancel.Text = "Cancel"; this.btnOK.DialogResult = System.Windows.Forms.DialogResult.OK; this.btnOK.Location = new System.Drawing.Point(182, 73); this.btnOK.Size = new System.Drawing.Size(75, 23); this.btnOK.Text = "OK"; this.label1.AutoSize = true; this.label1.Location = new System.Drawing.Point(12, 9); this.label1.Size = new System.Drawing.Size(132, 13); this.label1.Text = "Please Enter your Message"; this.txtUserInput.Location = new System.Drawing.Point(13, 35); this.txtUserInput.Size = new System.Drawing.Size(325, 20); this.AcceptButton = this.btnOK; this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.CancelButton = this.btnCancel; this.ClientSize = new System.Drawing.Size(350, 113); this.Controls.Add(this.txtUserInput); this.Controls.Add(this.label1); this.Controls.Add(this.btnOK); this.Controls.Add(this.btnCancel); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; this.MaximizeBox = false; this.MinimizeBox = false; this.ShowInTaskbar = false; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; this.ResumeLayout(false); this.PerformLayout(); } private System.Windows.Forms.Button btnCancel; private System.Windows.Forms.Button btnOK; private System.Windows.Forms.Label label1; private System.Windows.Forms.TextBox txtUserInput;
}
public class MainWindow : Form {
private string userMessage = "Default Message"; private bool textIsItalic = false; public MainWindow() { InitializeComponent(); } private void exitToolStripMenuItem_Click(object sender, EventArgs e) { Application.Exit(); } private void configureToolStripMenuItem_Click(object sender, EventArgs e) { ItalicUserMessageDialog dlg = new ItalicUserMessageDialog(); dlg.Message = userMessage; dlg.Italic = textIsItalic; if (DialogResult.OK == dlg.ShowDialog()) { userMessage = dlg.Message; textIsItalic = dlg.Italic; Invalidate(); } dlg.Dispose(); } private void MainWindow_Paint(object sender, PaintEventArgs e) { Graphics g = e.Graphics; Font f = null; if (textIsItalic) f = new Font("Times New Roman", 24, FontStyle.Italic); else f = new Font("Times New Roman", 24); g.DrawString(userMessage, f, Brushes.DarkBlue,50, 50); } private void InitializeComponent() { this.menuStrip1 = new System.Windows.Forms.MenuStrip(); this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.configureToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.menuStrip1.SuspendLayout(); this.SuspendLayout(); this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.fileToolStripMenuItem, this.toolsToolStripMenuItem}); this.menuStrip1.Location = new System.Drawing.Point(0, 0); this.menuStrip1.Size = new System.Drawing.Size(390, 24); this.menuStrip1.Text = "menuStrip1"; this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.exitToolStripMenuItem}); this.fileToolStripMenuItem.Text = "&File"; this.exitToolStripMenuItem.Text = "E&xit"; this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click); this.toolsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.configureToolStripMenuItem}); this.toolsToolStripMenuItem.Text = "&Tools"; this.configureToolStripMenuItem.Text = "&Configure"; this.configureToolStripMenuItem.Click += new System.EventHandler(this.configureToolStripMenuItem_Click); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(390, 182); this.Controls.Add(this.menuStrip1); this.MainMenuStrip = this.menuStrip1; this.Paint += new System.Windows.Forms.PaintEventHandler(this.MainWindow_Paint); this.menuStrip1.ResumeLayout(false); this.ResumeLayout(false); this.PerformLayout(); } private System.Windows.Forms.MenuStrip menuStrip1; private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem toolsToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem configureToolStripMenuItem; [STAThread] static void Main() { Application.EnableVisualStyles(); Application.Run(new MainWindow()); }
}
</source>
Use DialogResult property in Form
<source lang="csharp">
using System; using System.Drawing; using System.Windows.Forms;
class BetterDialog: Form {
public static void Main() { Application.Run(new BetterDialog()); } public BetterDialog() { Menu = new MainMenu(); Menu.MenuItems.Add("&Dialog!", new EventHandler(MenuOnClick)); } void MenuOnClick(object obj, EventArgs ea) { BetterDialogBox dlg = new BetterDialogBox(); DialogResult dr = dlg.ShowDialog(); Console.WriteLine(dr); }
} class BetterDialogBox: Form {
public BetterDialogBox() { Text = "Better Dialog Box"; FormBorderStyle = FormBorderStyle.FixedDialog; ControlBox = false; MaximizeBox = false; MinimizeBox = false; ShowInTaskbar = false; StartPosition = FormStartPosition.Manual; Location = ActiveForm.Location + SystemInformation.CaptionButtonSize + SystemInformation.FrameBorderSize; Button btn = new Button(); btn.Parent = this; btn.Text = "OK"; btn.Location = new Point(50, 50); btn.Size = new Size (10 * Font.Height, 2 * Font.Height); btn.DialogResult = DialogResult.OK; AcceptButton = btn; btn = new Button(); btn.Parent = this; btn.Text = "Cancel"; btn.Location = new Point(50, 100); btn.Size = new Size (10 * Font.Height, 2 * Font.Height); btn.DialogResult = DialogResult.Cancel; CancelButton = btn; }
}
</source>