【问题标题】:add click event to many control向多个控件添加点击事件
【发布时间】:2014-01-22 12:10:40
【问题描述】:

我的表单中有很多控件。例如,一个面板中有 120 个标签。我希望当用户单击每个标签时只需调用具有相同参数的相同函数。 现在我是这样使用的:

        private void label67_Click(object sender, EventArgs e)
    {
        ChangeToTextbox(sender);
    }

    private void label66_Click(object sender, EventArgs e)
    {
        ChangeToTextbox(sender);
    }

    private void label65_Click(object sender, EventArgs e)
    {
        ChangeToTextbox(sender);
    }

    private void label64_Click(object sender, EventArgs e)
    {
        ChangeToTextbox(sender);
    }

现在我可以在用户单击任何标签时轻松调用 ChangeToTextbox 函数吗?

【问题讨论】:

  • 网络?视窗?还有,你为什么要用 vb.net 标记 c# 代码??
  • @walther 我不认为这是 VB.net
  • @christopher,因为它不是,但在我编辑它之前它被标记为这样(因此我的投诉)
  • 我道歉!我反其道而行之。 :)
  • @walther - 有些人很高兴收到任何一种语言的解决方案,这就是为什么这个 可能 被标记为两种语言的原因。话虽如此,在这种情况下,添加处理程序的语法有些不同,因此 C# 在这里可能更合适。

标签: c# .net


【解决方案1】:

为面板上的所有标签添加相同的 OnClick 处理程序:

private void Form1_Load(object sender, EventArgs e)
{
    panel1.Controls.OfType<Label>().ToList().ForEach(l => l.Click += label_Click);
}

private void label_Click(object sender, EventArgs e)
{
    ChangeToTextbox(sender);
}

【讨论】:

    【解决方案2】:

    找到所有控件,然后通过代码添加处理程序;

    List<Control> controls = GetAllMyControls();
    foreach(Control control in controls)
    {
       control.OnClick += (o, e) => { ChangeToTextBox(o); }
    }
    

    web 和 winform 解决方案的语法应该非常相似。

    【讨论】:

      【解决方案3】:

      可以通过以下方法轻松实现:请尝试一下,

      1) 转到 Windows 窗体设计器并单击第一个 Label 控件以将其选中。然后按住 CTRL 键同时单击其他每个标签以选择它们。确保选择了每个标签。

      2) 然后转到“属性”窗口中的“事件”页面。向下滚动到 Click 事件,然后在框中输入 label_Click

      3) 按 ENTER。 IDE 将名为 label_Click() 的 Click 事件处理程序添加到代码中,并将其与每个标签挂钩。

      private void label_Click(object sender, EventArgs e)
      {
         ChangeToTextbox(sender);
      }
      

      参考:http://msdn.microsoft.com/en-us/library/dd553231.aspx

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-02-20
        • 1970-01-01
        • 2016-09-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-15
        相关资源
        最近更新 更多