gpt4 book ai didi

c# - 如何处理 WPF 中多个相似按钮的点击事件?

转载 作者:行者123 更新时间:2023-11-30 20:12:04 27 4
gpt4 key购买 nike

我是 C# 初学者,正在尝试在 WPF 中实现数字键盘。它由 10 个类似的按钮组成:

<Button Content="0" Name="button0" Click="anyButtonClicked" />
<Button Content="1" Name="button1" Click="anyButtonClicked" />
<Button Content="2" Name="button2" Click="anyButtonClicked" />
...
<Button Content="9" Name="button9" Click="anyButtonClicked" />

处理所有这些按钮的最佳做法是什么?我是在后面的代码中为每个函数构建一个函数(这很无聊并且我自己会重复),还是构建一个函数来处理任何点击的按钮?

在第二种情况下,如何识别点击了哪个按钮?我需要访问发件人对象的哪些属性?

最佳答案

如果你想在后面使用代码,那么你可以将它连接到一个事件处理程序,然后你可以将 sender 转换为一个 Button(或一个 FrameworkElement)并检查它的 Name property .

在下面扩展地精的回答;如果您想坚持代码隐藏和事件,您可以在父面板上定义事件:

<StackPanel Button.Click="anyButtonClicked">
<Button Content="0" Name="button0"/>
<Button Content="1" Name="button1"/>
<Button Content="2" Name="button2"/>
...
<Button Content="9" Name="button9"/>
</StackPanel>

然后使用 e.OriginalSource,转换为 Button 或 FrameworElement,来检索名称。

private void anyButtonClicked(object sender, RoutedEventArgs e)
{
var source = e.OriginalSource as FrameworkElement;

if (source == null)
return;

MessageBox.Show(source.Name);
}

或者,您可以采用 MVVM 方法,将所有按钮都绑定(bind)到一个命令,并传递一个 CommandParameter 来区分它们。

关于c# - 如何处理 WPF 中多个相似按钮的点击事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3021291/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com