c#自定义用户控件方法及使用

在软件开发中,我们有时候对Visual Studio提供的控件功能不满意,想自定义一个用户控件。

比如,我们想要一个TextBox控件,当鼠标点到TextBox控件中时,会在TextBox下面显示一个TreeView树控件,然后可以从TreeView控件中选择一个节点,节点的信息自动加载到TextBox中去,然后TreeView树会自动隐藏,当鼠标焦点移动出TreeView树控件时,TreeView树也会自动隐藏。如下图所示。

c#自定义用户控件方法及使用_第1张图片====》c#自定义用户控件方法及使用_第2张图片

下面来进行实现:

一、新建一个c#类库项目ShareLib,并添加用户控件TextBoxTreeView.cs。如下图:

(注:单独建一个类库重用性更好,如果不要求在别的项目中调用用户控件,也可以在一个Windows窗体应用程序项目中直接添加一个用户控件。)

二、双击TextBoxTreeView.cs进入设计界面,分别添加1个TextBox控件和1个TreeView控件,如下图所示:

c#自定义用户控件方法及使用_第3张图片

三、编辑TextBox属性Dock为Top,如图

c#自定义用户控件方法及使用_第4张图片

编辑TreeView属性,如图

c#自定义用户控件方法及使用_第5张图片

这样,当使用控件时,可以随意调整控件大小。

另外,为了后期在外部可以对TreeView树进行初始化,填充节点数据,我们修改TreeView的属性为Public,如下图所示:

同样方法,将TextBox控件Modifiers属性也设置为Public。

四、为TextBox添加鼠标事件,当鼠标进入时,显示TreeView控件,如下图

实现代码如下:

        private void textBox1_MouseDown(object sender, MouseEventArgs e)
        {

            treeView1.Visible = true;
            this.Height = 180;
            this.treeView1.Height = 150;
        }

为TreeView添加2个事件,一个是AfterSelect用于选择的树节点信息填到TextBox中。一个是鼠标的MouseLeave事件,当鼠标离开TreeView控件时,自动隐藏TreeView控件。如下图所示。

c#自定义用户控件方法及使用_第6张图片c#自定义用户控件方法及使用_第7张图片

实现代码如下:

        private void treeView1_MouseLeave(object sender, EventArgs e)
        {
            treeView1.Visible = false;

            this.Height = 21;

        }

        private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {
            textBox1.Text = e.Node.Text;
            treeView1.Visible = false;
            this.Height = 21;
        }

五、到现在这样一个简单的自定义控件就可以编译使用了。

编译后,新建一个测试的Windows窗体应用程序项目,就可以使用我们的自定义控件了。

在工具箱可以看到多出了我们自定义的控件,如下图所示:

直接拖入窗体设计界面,就可以使用了。

拖入后,可以调整控件的初始高度和宽度,在代码中可以控制TreeView中显示的树内容。效果如下图所示:

c#自定义用户控件方法及使用_第8张图片鼠标点入单位输入框后显示c#自定义用户控件方法及使用_第9张图片

大家可以试试。

你可能感兴趣的:(笔记,.NET开发,原创)