public YourControl{
  private Button buttonCtrl;
  public event EventHandle Click;
  public YourControl() {
    buttonCtrl = new Button();
    buttonCtrl.Click += YourClick;
    ...
  }
  private void YourClick(object sender, EventArgs e) {
    if (Click != null)
      Click(this, new EventArgs());
  }
}

解决方案 »

  1.   

    调用这个控件的时候,写Click事件。
      

  2.   

    但是在编译public event EventHandle Click;时发生错误:找不到类型或命名空间EventHandle
      

  3.   

    呵呵,我给你写个全的
    public delegate void Myevent();
    public event OnMouseDown Myevent;
    然后在要产生事件的地方,如button_Click()直接使用就可产生事件
    private void button_Click(object sender, System.EventArgs e)
    {
    OnMouseDown();
    }
    呵呵,简单吧,我的程序就是这么作的,绝对没问题。
      

  4.   

    下面是我写的控件
    在public event  EventHandler Click;这行编译错误:要求关键字new,但是加上了还是不对
    public class ButtonTextBox : System.Windows.Forms.TextBox 
    {
      private System.Windows.Forms.Button btnSelect;
      public event  EventHandler Click;
      public ButtonTextBox()
      {
        InitializeComponent();
      }
      #region Windows Form Designer generated code
      private void InitializeComponent()
      {
        this.btnSelect = new System.Windows.Forms.Button();
        this.btnSelect.Click += new System.EventHandler(YourClick);
        // tbxDept
        // 
        this.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
        this.Location = new System.Drawing.Point(72, 96);
        this.Name = "tbxDept";
        this.TabIndex = 0;
        this.Text = "";
        this.Click +=new EventHandler(this.Click);
        // 
        // btnSelect
        // 
        this.btnSelect.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
        this.btnSelect.Font = new System.Drawing.Font("????¨¬??", 6F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(134)));
        this.btnSelect.Location = new System.Drawing.Point(this.Location.X+80,this.Location.Y);
        this.btnSelect.Name = "btnSelect";
        this.btnSelect.Size = new System.Drawing.Size(25, 21);
        this.btnSelect.TabIndex = 1;
        this.btnSelect.Text = "...";
        this.btnSelect.Visible = false;

        this.Controls.AddRange(new System.Windows.Forms.Control[] {
                                                 this.btnSelect});
      }
      #endregion
      private void YourClick(object sender, EventArgs e) 
     {
        if (Click != null)
        Click(this, new EventArgs());
     }
        
      private void this_Click(object sender, System.EventArgs e)
      {              this.btnSelect.Visible = true;
    this.Size = new System.Drawing.Size(88, 21);
      }
    }
      

  5.   

    因为textBox本身也有Click事件,所以我建议,最好将Click改为ButtonClick,这样更好些。
      

  6.   

    修改了一下,在调用自定义的控件时可以找到button的click事件,但是运行后click没有反应using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Drawing;
    using System.Data;
    using System.Windows.Forms;public class SelectBox : System.Windows.Forms.UserControl
    {
      private System.Windows.Forms.TextBox tbxSelect;
      private System.Windows.Forms.Button btnSelect;
      public event  EventHandler buttonClick;

      private System.ComponentModel.Container components = null;
      
      public SelectBox()
     {
        InitializeComponent();
      }  protected override void Dispose( bool disposing )
      {
        if( disposing )
        {
           if( components != null )
              components.Dispose();
        }
        base.Dispose( disposing );
      }  #region Component Designer generated code
      
      private void InitializeComponent()
      {
        this.tbxSelect = new System.Windows.Forms.TextBox();
        this.btnSelect = new System.Windows.Forms.Button();
        this.SuspendLayout();
        // 
        // tbxSelect
        // 
        this.tbxSelect.Name = "tbxSelect";
        this.tbxSelect.Size = new System.Drawing.Size(100, 21);
        this.tbxSelect.TabIndex = 0;
        this.tbxSelect.Text = "";
        // 
        // btnSelect
        // 
        this.btnSelect.Location = new System.Drawing.Point(this.tbxSelect.Location.X+80,this.tbxSelect.Location.Y);
        this.btnSelect.Name = "btnSelect";
        this.btnSelect.Size = new System.Drawing.Size(32, 21);
        this.btnSelect.Visible = true;
        this.btnSelect.TabIndex = 1;
        this.btnSelect.Text = "<<";
        // 
        // SelectBox
        // 
        this.Controls.AddRange(new System.Windows.Forms.Control[]  this.btnSelect,
    this.tbxSelect});
        this.Name = "SelectBox";
        this.Size = new System.Drawing.Size(104, 24);
        this.ResumeLayout(false);
      }
      #endregion  private void tbxSelect_Click(object sender, System.EventArgs e)
      {     
        this.Size = new System.Drawing.Size(88, 21);
        this.btnSelect.Visible = true;
      }  private void YourClick(object sender, EventArgs e) 
      {
        if (buttonClick != null)
          buttonClick(this, new EventArgs());
      }}
    调用时:private void selectBox1_buttonClick(object sender, System.EventArgs e)
    {
      tempForm=new Form();
    }
      

  7.   

    我想还应该在你的这个函数
    InitializeComponent()
    中加一段代码:this.btnSelect.Click += new EventHandler(YourClick);