簡體   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