有两个自定义控件:UserControlA,UserControlB.分别布局于MainForm的Panl1和Panl2中。
现在UserControlA中有一点击事件,如何触发UserControlB中的方法UserControlBMehtod啊?
而且UserControlBMehtod中要使用到UserControlB中传递过来的参数。
大虾们能否提供点思路啊?

解决方案 »

  1.   

    UserControlB也是一个类吧,UserControlA中点击事件调用它不行吗?
      

  2.   

    用事件啊!
    public degleate void XXHandle(需要传递的参数);public class MainFoem : Form
    {
      public event XXHandle XX事件;  private void UserControlA_Click(object senderer,...)
      {
        if (XXHandle != null)
        {
          XXHandle(参数);
        }
      }  private void On_XX事件(...)
      {
        //处理
        UserControlB.Click(...);
      }
    }
      

  3.   

    怎样访问得了啊?如果是在MainForm中,可以访问的了,在类中私有、公有方法可以调用。
    但是我的UserControlA是放System.Windows.Form.PictureBox的,Dock为Fill,这样点击事件就为Picture的点击事件。
    UserControlA、UserControlB为MainForm中的私有控件类,UserControlA类怎样能调用UserControlB中的方法呢!?
      

  4.   

    UserControlB中的方法UserControlBMehtod写到公共类中调用.
      

  5.   


    觉得这个方法应该可以实现,但是我要的不是UserControA_Click事件,而是UserControlA.PictureBox的Click,PictureBox为Fill,
      

  6.   

    在MainForm中不能够触发到UserControlA中的PictureBox(Dock 为Fill)的点击事件。!
    所以在UserControlA中写了个事件,但是UserControlA中还是引用不了UserControlB。
    UserControlB已经在MainForm中实例化了!
      

  7.   

    UserControlB中对外公开一个方法或者属性这里拿属性举例        string _iabc;        public string IAbc
            {
                get
                {
                    return _iabc;
                }
                set
                {
                    if (_iabc != value)
                    {
                        _iabc = value;
                        //触发的方法
                        UserControlBMehtod(_iabc);
                    }
                }
            }
    修改该属性的值就可以触发你的方法,并且该属性的值可以作为参数传递给UserControlBMehtod,属性可以用objec,不一定是string
      

  8.   

        public partial class UserControlA : UserControl
        {
            public UserControlA()
            {
                InitializeComponent();
            }        private void pictureBox1_Click( object sender, EventArgs e )
            {
                this.OnClick( e );
            }
        }
    form里:
            private void userControlA1_Click( object sender, EventArgs e )
            {
    这里可以操作ControlB
            }