日期:2014-05-17  浏览次数:20889 次

根据控件名称,调用相应的Click事件
1. private void lblBtn1_Click(object sender, EventArgs e)
    {
     //程序响应
    }

2. private void imgBtn1_Click(object sender, EventArgs e)
    {
      string sName = ((PictureBox)sender).Name;
      sName = sName.Replace("img", "lbl");

      ***问题是,如何实现下面的功能?不要直接用下面语句,因为有很多类似的名称要实现此功能,不想一一拼写。比如lblBtn1对应imgBtn1,lblBtn2对应imgBtn2.......n对n,等等 
      //lblBtn1_Click(sender, e);
    }
根据控件名称,调用相应的click事件

------解决方案--------------------
你可以试试在controls中通过name来find到,然后对这个找到的控件click(), 具体能不能实现我没做过,但我猜测应该可以
------解决方案--------------------
***这里该加入什么语句就能实现和 lblBtn1_Click(sender, e); 等效的功能呢?
那你就把这个事件注册到click里面就行了。
------解决方案--------------------
class MyLabel:Label
{
    public void InvokeClick()
    {
         OnClick(null,null);
    }
}

//把Label换成MyLabel
2. private void imgBtn1_Click(object sender, EventArgs e)
    {
      string sName = ((PictureBox)sender).Name;
      sName = sName.Replace("img", "lbl");
      foreach (Control label1 in (panelMain.Controls))
          {
            if (label1 is MyLabel)
            {
              if (label1.Name == sName)
              {
                label1.InvokeClick(); //