美文网首页
C# winform 自定义控件

C# winform 自定义控件

作者: 谢伟浩 | 来源:发表于2018-03-28 16:20 被阅读0次

    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 自定义控件

          本文链接:https://www.haomeiwen.com/subject/hqoycftx.html