2004.7.15 [C#学习记录]使用C#编写一个自定义控件(高手莫入,哈哈)

using System ;
using System . Collections ;
using System . ComponentModel ;
using System . Drawing ;
using System . Data ;
using System . Windows . Forms ;

namespace WindowsControlLibrary1
{
///
/// UserControl1 的摘要说明。
///
public class UserControl1 : System . Windows . Forms . UserControl
{
///
/// 必需的设计器变量。
///
private System . ComponentModel . Container components = null ;

/// 私有域
private string MyText ;
//存储关联的事件处理方法;
private EventHandler OnMyTextChanged ;
public UserControl1 ( )
{
// 该调用是 Windows.Forms 窗体设计器所必需的。
InitializeComponent ( ) ;

// TODO: 在 InitializeComponent 调用后添加任何初始化
MyText = "Static Control" ;
OnMyTextChanged = null ;
}

///
/// 清理所有正在使用的资源。
///
protected override void Dispose ( bool disposing )
{
if ( disposing )
{
if ( components ! = null )
components . Dispose ( ) ;
}
base . Dispose ( disposing ) ;
}

#region Component Designer generated code
///
/// 设计器支持所需的方法 - 不要使用代码编辑器
/// 修改此方法的内容。
///
private void InitializeComponent ( )
{
//
// UserControl1
//
this . Name = "UserControl1" ;
this . Size = new System . Drawing . Size ( 248 , 128 ) ;
this . Load + = new System . EventHandler ( this . UserControl1_Load ) ;
this . Paint + = new System . Windows . Forms . PaintEventHandler ( this . UserControl1_Paint ) ;

}
#endregion

private void UserControl1_Paint ( object sender , System . Windows . Forms . PaintEventArgs e )
{
SizeF textSize = e . Graphics . MeasureString ( MyText , Font ) ;
float xPos = ( ClientRectangle . Width / 2 ) - ( textSize . Width / 2 ) ;
float yPos = ( ClientRectangle . Height / 2 ) - ( textSize . Height / 2 ) ;
e . Graphics . DrawString ( MyText , Font , new SolidBrush ( Color . Black ) , xPos , yPos ) ;
}

private void UserControl1_Load ( object sender , System . EventArgs e )
{

}

//公开属性
public String ControlText
{
get
{
return MyText ;

}
set
{
MyText = value ;
//重画
Invalidate ( ) ;
//如果关联了事件处理方法,则调用该方法
if ( OnMyTextChanged ! = null )
{
OnMyTextChanged . Invoke ( this , EventArgs . Empty ) ;
}
}

}
//声明了一个公开事件
public event EventHandler MyTextChanged
{
add
{
OnMyTextChanged + = value ;
}
remove
{
OnMyTextChanged = value ;
}
}

}
}

Published At
Categories with Web编程
Tagged with
comments powered by Disqus