我知道之前有人问过这个问题,但经过大约一个小时的搜索,我无法找出向事件处理程序添加参数的最简单方法。默认情况下,这些处理程序的模板只能接受 (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/