日期:2014-05-19  浏览次数:20895 次

(在线等待)高手的请帮个忙 C#重用事件?
希望大家给个例子.希望大家给个方便.   能能够帮上弟的忙!
将CODE   写出来,越短越好,只要能实现做法就可以了.

比喻:
      private   void   摄相机1ToolStripMenuItem1_Click(object   sender,   EventArgs   e)
                {     int   a   =   1;         }

      private   void   摄相机2ToolStripMenuItem1_Click(object   sender,   EventArgs   e)
                {     int   a   =1   }

      private   void   摄相机3ToolStripMenuItem1_Click(object   sender,   EventArgs   e)
                {       int   a   =1         }

        private   void   摄相机4ToolStripMenuItem_Click(object   sender,   EventArgs   e)
                {           int   a   =1;     }

            ........


------解决方案--------------------
private void button1_Click(object sender, EventArgs e)
{

MessageBox.Show( "Clicked button1 ");
}

private void button2_Click(object sender, EventArgs e)
{
Button bt3 = new Button();
bt3.Size = new Size(200, 100);
bt3.Left = 100;
bt3.Top = 100;
bt3.Text = "我的CLICK就是button1的CLICK ";
bt3.Click += new System.EventHandler(this.button1_Click);
this.Controls.Add(bt3);
}
------解决方案--------------------
顶下
------解决方案--------------------
别偷懒了 写吧 要不就遍历Menu
------解决方案--------------------

private void InitializeComponent()
{
......

摄相机1ToolStripMenuItem1.Clinic += new EventHandler(摄相机ToolStripMenuItem1_Click);
摄相机1ToolStripMenuItem2.Clinic += new EventHandler(摄相机ToolStripMenuItem1_Click);
摄相机1ToolStripMenuItem3.Clinic += new EventHandler(摄相机ToolStripMenuItem1_Click);
摄相机1ToolStripMenuItem4.Clinic += new EventHandler(摄相机ToolStripMenuItem1_Click);

......
}

private void 摄相机ToolStripMenuItem1_Click(object sender, EventArgs e)
{

}
------解决方案--------------------
......

什么意思就是:“在Form初始时,指定各个 '摄相机1ToolStripMenuItem '的Click事件的处理方法为同一个: '摄相机ToolStripMenuItem1_Click ' ”。 你看后面new EventHandler(摄相机ToolStripMenuItem1_Click)都是一样的...

实在还不明白, 只知道双击个控件写事件处理方法的话。你就双击第一个控件,写好处理方法。然后到窗体设计器界面,打开属性窗口,它上面有个闪电状图标,点那个,列出各个控件的事件,选择其他要用同一方法的控件,Click事件下拉框会列出来你刚写的事件处理方法.. 选中,自动帮你生成代码了..
------解决方案--------------------
ly_0205() 同志给出的就是正解。如果你懒得手动写的话,可以这样:
写好第一个的事件,然后在其它按钮的属性窗体中的“事件”里,找到Click事件,在下拉框里选中你写好的第1个的事件就可以了。

其实,更简单的办法是你一个都不响应,只响应整个工具条的 ItemClicked 事件,在其中switch也好怎么也好,也就绕过“重用”的问题了
------解决方案--------------------
先为第一个按钮产生事件先,然后点击第二个按钮,查看他的属性,选择事件,点一下Click事件,在旁边的下拉框选第一个按钮所产生的那个事件函数。
如此类推,将其余的按钮都设置到同一个函数中。

但是全部按钮的点击都触发同一个函数,如何区分呢?
你可以通过object sender来获得是那个按钮。
string buttonText = ((Button)sender).Text;