B窗体有bt1,bt2,bt3,bt4.
如何在主窗体中判断那个BUTTON被触发。

解决方案 »

  1.   

    在A窗体中找到B窗体中所有的按钮,侦听每个按钮的Click事件,然后就你自己想怎么处理就怎么处理。
      

  2.   

    思路不对
    你应该理解事件驱动的概念
    而不是轮询是B的按钮被点下的时候触发事件,然后事件里写代码通知窗体A执行某个方法
    而不是在窗体A中不断的去检测窗体B中是否有按钮被按下
      

  3.   

    使用委托,窗体B,       public delegate void DelegateSetText(string value);
            public event DelegateSetText SetTextEvent; // 定义事件
            /// <summary>
            /// 触发事件
            /// </summary>
            /// <param name="value"></param>
            private void RaiseEvent(string value)
            {
                if (SetTextEvent != null)
                    SetTextEvent(value);
            }        /// <summary>
            /// 发送
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void button1_Click(object sender, EventArgs e)
            {
                // this.textBox1.Text
                RaiseEvent("点击了:" + (sender as Button).Text);   // 显示点击button的text
            }窗体A: private void button1_Click(object sender, EventArgs e)
            {
                // 显示子窗口
                TargetForm frm = new TargetForm();
                frm.SetTextEvent += new TargetForm.DelegateSetText(frm_SetTextEvent);
                frm.Show();
            }        void frm_SetTextEvent(string value)
            {
                this.textBox1.Text = value;
            }
      

  4.   

    7楼正是我想说的,很好,楼主参考下,这样代码不需要javascript,维护起来更方便
      

  5.   

    红孩儿说的不错你触发click的时候,就要通知主窗体去接收就好了
      

  6.   

    总结一下楼上的答案,将你的思路反转一下
    简单的说就是当B窗口按钮点击时,通知A窗口
    要实现这个功能就得用委托
    也就是在B窗口申明一个委托,再用event封装一个该委托变量。 那么A窗口再将一个方法注册到该事件上,B窗口内当按钮点击时调用该事件则会触发A窗口注册上的方法当然其实更简单的是将A窗口传递给B窗口,然后点击按钮时B窗口直接a.XX() ,但这就是强依赖了不好
      

  7.   

    winfrom  使用委托可以实现
      

  8.   

    方法1 做个静态变量不存BUTTON
    方法2 BUTTON作为参数传个B
    方法3 B的事件函数注册到A的BUTTON点击事件上
    方法4 读取堆栈的信息,解析信息获取BUTTON
      

  9.   

    7楼正解,多form交互,
    使用事件处理是正道
      

  10.   

    在B里定义一个事件,点击按钮就触发事件并把按钮的Name做参数带出去