您的位置:首页 > 编程语言 > C#

2004.7.15 [C#学习记录]使用C#编写一个自定义控件

2004-07-15 22:33 871 查看
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;
}
}

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息