Csharp/CSharp Tutorial/GUI Windows Forms/Custom Control — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
|
(нет различий)
|
Версия 15:31, 26 мая 2010
Create control
using System;
using System.Drawing;
using System.Collections;
using System.ruponentModel;
using System.Windows.Forms;
using System.Data;
public class UserControlForm : System.Windows.Forms.Form
{
private UserControlExample userControlExample1;
private System.ruponentModel.Container components = null;
public UserControlForm()
{
InitializeComponent();
}
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
private void InitializeComponent()
{
this.userControlExample1 = new UserControlExample();
this.SuspendLayout();
this.userControlExample1.Current = 5;
this.userControlExample1.Location = new System.Drawing.Point(98, 113);
this.userControlExample1.Max = 10;
this.userControlExample1.Min = 0;
this.userControlExample1.Name = "userControlExample1";
this.userControlExample1.Size = new System.Drawing.Size(96, 40);
this.userControlExample1.TabIndex = 0;
//
// UserControlForm
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(292, 266);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.userControlExample1});
this.Name = "UserControlForm";
this.Text = "UserControlForm";
this.ResumeLayout(false);
}
static void Main()
{
Application.Run(new UserControlForm());
}
}
public class UserControlExample : System.Windows.Forms.UserControl
{
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.VScrollBar vScrollBar1;
private System.ruponentModel.Container components = null;
public UserControlExample()
{
InitializeComponent();
}
protected override void Dispose( bool disposing )
{
if( disposing )
{
if( components != null )
components.Dispose();
}
base.Dispose( disposing );
}
private void InitializeComponent()
{
this.textBox1 = new System.Windows.Forms.TextBox();
this.vScrollBar1 = new System.Windows.Forms.VScrollBar();
this.SuspendLayout();
this.textBox1.Location = new System.Drawing.Point(8, 8);
this.textBox1.Name = "textBox1";
this.textBox1.ReadOnly = true;
this.textBox1.Size = new System.Drawing.Size(48, 20);
this.textBox1.TabIndex = 0;
this.textBox1.Text = "";
this.textBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Right;
this.vScrollBar1.Location = new System.Drawing.Point(64, 8);
this.vScrollBar1.Name = "vScrollBar1";
this.vScrollBar1.Size = new System.Drawing.Size(17, 24);
this.vScrollBar1.TabIndex = 1;
this.vScrollBar1.Scroll += new System.Windows.Forms.ScrollEventHandler(this.vScrollBar1_Scroll);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.vScrollBar1,
this.textBox1});
this.Name = "UserControlExample";
this.Size = new System.Drawing.Size(96, 40);
this.ResumeLayout(false);
}
private int m_min = int.MinValue;
private int m_max = int.MaxValue;
private int m_current = 0;
private void vScrollBar1_Scroll(object sender, System.Windows.Forms.ScrollEventArgs e)
{
if ( e.Type == ScrollEventType.SmallIncrement )
{
try
{
Current -= 1;
}
catch
{
}
}
else
{
if ( e.Type == ScrollEventType.SmallDecrement )
{
try
{
Current += 1;
}
catch
{
}
}
}
vScrollBar1.Value = 50;
}
public int Min
{
get
{
return m_min;
}
set
{
m_min = value;
}
}
public int Max
{
get
{
return m_max;
}
set
{
m_max = value;
}
}
public int Current
{
get
{
return m_current;
}
set
{
if ( ( value > m_max ) || ( value < m_min ) )
{
throw new ArgumentOutOfRangeException( "Current" );
}
m_current = value;
textBox1.Text = m_current.ToString();
}
}
}
Create your own component by subclassing System.ComponentModel.Component
using System;
using System.ruponentModel;
using System.Collections;
using System.Diagnostics;
public class MyComponent : System.ruponentModel.ruponent
{
private System.ruponentModel.Container components = null;
public MyComponent(System.ruponentModel.IContainer container)
{
container.Add(this);
InitializeComponent();
}
public MyComponent()
{
InitializeComponent();
}
private void InitializeComponent()
{
components = new System.ruponentModel.Container();
}
protected string m_message;
public string Message
{
get
{
return m_message;
}
set
{
m_message = value;
}
}
}
The clock control
using System;
using System.Collections;
using System.ruponentModel;
using System.Drawing;
using System.Data;
using System.Windows.Forms;
public class DigitalClock : System.Windows.Forms.UserControl {
private System.Windows.Forms.Timer timer1;
private System.ruponentModel.IContainer components;
public DigitalClock() {
this.ruponents = new System.ruponentModel.Container();
this.timer1 = new System.Windows.Forms.Timer(this.ruponents);
this.timer1.Enabled = true;
this.timer1.Interval = 1000;
this.timer1.Tick += new System.EventHandler(this.OnTick);
this.Paint += new System.Windows.Forms.PaintEventHandler(this.OnPaint);
}
private void OnPaint(object sender, System.Windows.Forms.PaintEventArgs e) {
System.DateTime dt = System.DateTime.Now;
String Text = dt.ToLongTimeString();
e.Graphics.DrawString(Text, Font, new SolidBrush(ForeColor),ClientRectangle);
}
private void OnTick(object sender, System.EventArgs e) {
this.Refresh();
}
}
public class Form1 : System.Windows.Forms.Form {
private System.Windows.Forms.Label label1;
private DigitalClock clock= new DigitalClock();
public Form1() {
this.label1 = new System.Windows.Forms.Label();
this.SuspendLayout();
this.label1.Location = new System.Drawing.Point(16, 24);
this.label1.Size = new System.Drawing.Size(128, 16);
this.label1.Text = "Clock:";
this.clock.Location = new System.Drawing.Point(16, 50);
this.clock.Size = new System.Drawing.Size(128, 80);
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(292, 273);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.label1,
this.clock});
this.ResumeLayout(false);
}
[STAThread]
static void Main() {
Application.Run(new Form1());
}
}