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 ;
}
}

}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值