WinForm用户控件:ComboTextBox

WinForm应用程序做资料录入时,有些内容我们不希望让用户手工录入,而是弹出一新窗体让用户选择内容,这时我们就需要一个类似控件:



vs2008中没有这样的控件,但通过组合TextBox和Button控件可以实现要求,这样我们得做个用户控件来满足需求,命名为ComboTextBox。

第一步:新建用户控件ComboTextBox,在界面放置好TextBox和Button后,控件代码(ComboTextBox.cs)如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class ComboTextBox : UserControl
    {
        public ComboTextBox()
        {
            InitializeComponent();
            
        }

        /// <summary>
        /// 获取或设置文本框中的当前文本
        /// </summary>
        public new string Text
        {
            get { return textBox1.Text; }
            set { textBox1.Text = value; }
        }


        //声明一个事件,在按钮点击的时候触发
        public delegate void UcClickEventHandler();
        public event UcClickEventHandler UcClick;
        public void OnUcClick()
        {
            if (UcClick != null)
                UcClick();
        }


        /// <summary>
        /// 触发UcClick事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            OnUcClick();
        }
    }
}

第二步:主窗体代码(Form1.cs)如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            comboTextBox1.Text = "---请选择---";
            comboTextBox1.UcClick += new ComboTextBox.UcClickEventHandler(ShowForm2);
        }

        /// <summary>
        /// 打开Form2
        /// </summary>
        private void ShowForm2()
        {
            (new Form2()).Show(this);
        }

        /// <summary>
        /// 设置/获取控件内容
        /// </summary>
        public string ComboTextBoxText
        {
            get { return comboTextBox1.Text; }
            set { comboTextBox1.Text = value; }
        }
    }
}

最终效果:



点击这里下载源码,使用vs20008开发。

评论: 0 | 引用: 0 | 查看次数: 4088
发表评论
登录后再发表评论!