繁体   English   中英

向 WPF 中的 Button_Click 事件添加参数

[英]Adding a Parameter to a Button_Click event in WPF

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

    }
}

我需要将所有进程的列表传递给事件处理程序

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

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
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM