C# winform 自定义控件

1. 新建简单的组合控件

打开Visual Studio,新建一个C# winform项目。点击“添加新项”,选择“用户控件”,输入文件名“MyUserControl.cs”,点击添加完成新建。运行调试后退出,可以在窗体设计界面的工具箱中看到我们刚刚创建的MyUserControl控件。

工具箱中的MyUserControl

在MyUserControl中添加一个Button和一个Label,名字分别修改为btnRead和lblName,并将MyUserControl背景修改为ActiveBorder。

设计MyUserControl

点击运行调试后退出,把MyUserControl的修改更新到工具箱中。

2. 为控件添加属性

属性定义通常由以下两部分组成:
1、专用数据成员的定义。

 private string myName = "";

2、使用属性声明语法对公共属性进行的定义。
该语法通过 get 和 set 访问函数将专用数据成员和公共属性关联起来。

public string MyName
{
        get
        {
            return myName;
        }
        set
        {
            myName = value;
            lblName.Text = myName;//lblName用于显示myName
        }
}

value 这个术语是属性定义语法中的一个关键字。在呼叫代码中,将变量 value 分配给属性。value 的类型必须同它被分配到的属性的声明类型相同。

以上代码在MyUserControl.Designer.cs中添加。

下面在窗体内调用MyUserControl的属性。在Form1中添加MyUserControl,TextBox, Button, 名称分别修改为myUserControl,textBox,btnWrite。


Form1

实现btnWrite的点击事件:

        private void btnWrite_Click(object sender, EventArgs e)
        {
            myUserControl.MyName = textBox.Text;
        }

运行调试,点击Write按钮将textBox的内容写到自定义控件的label中。

3. 为控件添加添加事件

在MyUserControl.cs文件中定义委托和事件

//定义委托
public delegate void BtnClickHandle(object sender, EventArgs e);
//定义事件
public event BtnClickHandle UserControlBtnClicked;

添加btnRead点击事件:

private void btnRead_Click(object sender, EventArgs e)
{
    if (UserControlBtnClicked != null)
    {
        UserControlBtnClicked(sender, new EventArgs());
    }
}

在Form1中定义事件处理方法:

private void myUserControl_UserControlBtnClicked(object sender, EventArgs e)
{
    textBox.Text = myUserControl.MyName;
}

用+=操作符添加事件到事件队列中(-=操作符能够将事件从队列中删除),双击Form1进入Load

private void Form1_Load(object sender, EventArgs e)
{
    myUserControl.UserControlBtnClicked += 
    new MyUserControl.BtnClickHandle(myUserControl_UserControlBtnClicked);
}

运行调试,点击Read按钮可以把自定义控件中的值读到textBox中。

你可能感兴趣的:(C# winform 自定义控件)