我的用户控件 有一个文本框textBox1,我想为用户控件添一个textBox1_TextChanged事件,但不会添,请高手指教

解决方案 »

  1.   

    不懂是什么意思?是在这个TEXTBOX1的TEXTCHANGED下去写事件,还是....?
      

  2.   

    是给用户控件添加TEXTCHANGED事件
      

  3.   


    自己google一下“给用户控件添加事件”。
      

  4.   


            private void Form_1_Load(object sender, EventArgs e)
            {
                textBox1.TextChanged += new EventHandler(textBox1_TextChanged);
            }        void textBox1_TextChanged(object sender, EventArgs e)
            {
                
            }
      

  5.   

    在你的textBox1控件上面右键选择属性 在右边的属性窗口里面 点击那个“闪电”标志
    (鼠标移动上去会显示 事件)
    在下面找到TextChanged 在右边点一下鼠标 出现光标后 按一下回车键 就能加进去一个TextChanged 事件
      

  6.   

    是在你拖到的窗口上的textBox上右键选择属性
      

  7.   


    没看清楚楼主的意思
    现在这样行了吧    public partial class UserControl1 : UserControl
        {
            public event EventHandler TextChanged;        public UserControl1()
            {
                InitializeComponent();
                textBox1.TextChanged+=new EventHandler(textBox1_TextChanged);
            }        private void textBox1_TextChanged(object sender, EventArgs e)
            {
                if (this.TextChanged != null)
                {
                    TextChanged(sender, e);
                }
            }
        }
      

  8.   


        public class StringEventArgs : EventArgs
        {
            public string Arg;        public StringEventArgs(string s)
            {
                this.Arg = s;
            }
        }    public delegate void StringEventHandler(object sender, StringEventArgs e);在用户控件类中        public event StringEventHandler TextBox1TextChanged;
    在textbox的textchanged事件中
    private void textbox1_textchanged(....)
    if (TextBox1TextChanged!= null)
                {                
                    TextBox1TextChanged.Invoke(this, new StringEventArgs(“xxx”));
                }
    在使用这个用户控件的类中 订阅上面的事件 mUserControl1.TextBox1TextChanged+= new StringEventHandler(UserControl1_TextBox1TextChanged);
            }        void UserControl1_TextBox1TextChanged(object sender, StringEventArgs e)
            {
                //(e.Arg);
            }
      

  9.   


    这个差不离了,但是呢UserControl 是具有 Text 属性和 TextChanged 事件的,只是被隐藏了
    调用属性和方法需要自己手动打
    // 在 UserControl 中加入代码
    private void textBox1_TextChanged(object sender, EventArgs e)
    {
        this.Text = this.textBox1.Text;
    }// 在 Form_Load 事件中加入代码
    this.userControl11.TextChanged += (obj, args) =>
    {
        this.Text = this.userControl11.Text;
    };
    那么怎么公开属性和事件呢?/*
     * 控件设计相关
     * 
     * System.ComponentModel
     * System.ComponentModel.Design
     * System.Windows.Forms.Design (System.Design.dll)
     * System.Drawing.Design (System.Drawing.Design.dll)
     * 
     * Attribute, eg:
     * BrowsableAttribute 属性是否在 PropertyGrid 中可见
     * EditorBrowsable 属性是否在 Member List 中可见
     * 参考 System.ComponentModel
     * 
     * Designer, eg:
     * ControlDeigner 一般控件设计器
     * ParentControlDesigner 可承载子控件的设计器
     * 参考 System.ComponentModel.Design.ComponentDesigner
     * 
     * Editor, eg:
     * ImageEditor Image 属性编辑器
     * DateTimeEditor DateTime 属性编辑器
     * 参考 System.Drawing.Design.UITypeEditor
     * 
     * 
     * UserControl 是具有 Text 属性和 TextChanged 事件的
     * 只是被隐藏了而已
     * 
     */// 公开 Text 属性
    [Browsable(true)]
    [EditorBrowsable(EditorBrowsableState.Always)]
    public override string Text
    {
        get
        {
            return base.Text;
        }
        set
        {
            if (base.Text != value)
            {
                base.Text = value;
                this.OnTextChanged(new EventArgs());
            }
        }
    }// 公开 TextChanged 事件
    [Browsable(true)]
    [EditorBrowsable(EditorBrowsableState.Always)]
    public new event EventHandler TextChanged;
    protected override void OnTextChanged(EventArgs e)
    {
        base.OnTextChanged(e);    if (this.textBox1.Text != this.Text)
            this.textBox1.Text = this.Text;    if (this.TextChanged != null)
            this.TextChanged(this, e);
    }private void textBox1_TextChanged(object sender, EventArgs e)
    {
        if (this.Text != this.textBox1.Text)
        {
            this.Text = textBox1.Text;
        }
    }
      

  10.   

    qqamoon
     
    (龍过鸡年) 这个回答的更好啊,可惜已经结贴了