【问题标题】:How do I handle any button's left-click with a single event handler function in C# instead of one for each button?如何使用 C# 中的单个事件处理函数而不是每个按钮一个事件处理函数来处理任何按钮的左键单击?
【发布时间】:2018-11-19 15:30:46
【问题描述】:

使用以下内容:

<StackPanel>
    <Button Content="Button1" x:Name="btn1" Click="Button_Click"/>
    <Button Content="Button2" x:Name="btn2" Click="Button_Click"/>
    <TextBox x:Name="output"></TextBox>
</StackPanel>

如何在 C# 中使用单个事件处理函数而不是每个按钮一个事件处理函数来处理任何按钮的左键单击?

【问题讨论】:

  • 这是一个问题还是一个答案?
  • 据我所知,我不认为你可以。如果我正确理解您的问题,您是否尝试像 ButtonGroup 一样添加所有按钮,然后将事件处理程序分配给组而不是单个按钮?因为您目前拥有的是您将如何处理您的问题。按钮必须知道事件处理程序,您需要指定它才能知道。
  • 您标记了 XAML,但这是使用 WPF、Silverlight、Xamarin 等吗?这可能会影响可能的答案。

标签: c# .net xaml


【解决方案1】:

如果您想在 stackpanel 中放置多个类似的按钮,并且不想在任何地方写 Click="Button_Click",那么您可以通过下一种方式进行。

  1. runat="server" 属性添加到您的StackPanel 并添加一些ID,例如ID="ButtonsContainer"
  2. 通过 StackPanel 中的所有控件进行迭代:
for (var i = 0; i < ButtonsContainer.Controls.Count; i++) {
    var button = ButtonsContainer.Controls[i] as Button;
    if(button != null)
        button.Click += Button_Click;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-16
    • 1970-01-01
    • 1970-01-01
    • 2016-03-09
    • 1970-01-01
    • 2016-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多