gpt4 book ai didi

c# - 向 WPF 中的 Button_Click 事件添加参数

转载 作者:太空宇宙 更新时间:2023-11-03 21:19:39 26 4
gpt4 key购买 nike

我知道之前有人问过这个问题,但经过大约一个小时的搜索,我无法找出向事件处理程序添加参数的最简单方法。默认情况下,这些处理程序的模板只能接受 (object sender, RoutedEventArgs e) 参数。我很难相信没有一种干净简单的方法可以做到这一点,因为我想这个问题经常发生。但是我是 WPF 的新手,所以如果有人可以就此问题提供一些指导,我的代码如下。

当点击这个按钮时

<Button Height="23" VerticalAlignment="Bottom" Margin="150, 0, 0, 2" Content="Terminate All Processes" Width="135" HorizontalAlignment="Left" Click="TerminateAll_Click" Name="TerminateAll"/>

我需要一个事件来触发以关闭我的所有进程。不过,要做到这一点,我需要将所有进程的列表传递给事件处理程序,而且我还没有找到一种简单的方法来做到这一点。感谢您提供的任何帮助。

编辑:这是我的 .cs 文件

public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
ObservableCollection<Proc> procs = new ObservableCollection<Proc>();

Processes.getProcs(ref procs);
lview.ItemsSource = procs;
}

private void TerminateAllProcesses(ObservableCollection<Proc> procs)
{
foreach (Proc p in procs)
{
if (!p.Pro.HasExited) { p.Pro.Kill(); }
}
}

public void TerminateAll_Click(object sender, RoutedEventArgs e)
{

}
}

最佳答案

I need to pass the list of all the processes to the event handler

为什么? 按钮 触发事件,因此它必须有一个已知的参数列表。另外,它不知道进程列表,因此无论如何也不知道要传递什么。但是,没有什么可以阻止您从点击事件中触发另一种方法:

private void TerminateAll_Click(object sender, RoutedEventArgs e) 
{
List<string> processes = // get the list
TerminateAll(processes);
}

public void TerminateAll(List<string> processes)
{
foreach(string process in processes)
Terminate(process);
}
private void Terminate(string process)
{
// terminate the process
}

关于c# - 向 WPF 中的 Button_Click 事件添加参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31680854/

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