微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

显示组合框上的所有进程

如何解决显示组合框上的所有进程

我想制作一个ComboBox显示所有正在运行的进程。

此处是屏幕截图的样子。只是空着。

Screenshot of my application and combo box.

XAML:

ComboBox Name="comboBox" RenderTransformOrigin="0.502,-0.751" Margin="129,112,111,217" SelectionChanged="comboBox_SelectionChanged"/>

C#:

{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void  comboBox_SelectionChanged(object sender,SelectionChangedEventArgs e)
    {
        comboBox.Items.Clear();
        Process[] MyProcess = Process.GetProcesses();
        for (int i = 1; i < MyProcess.Length; i++)
            comboBox.Items.Add(string.Format("{0} - {1}",MyProcess[i].ProcessName,MyProcess[i].Id));
    }
}

解决方法

SelectionChanged事件不起作用,因为它仅在选择更改时才触发。您可以改用DropDownOpened事件。

ComboBox Name="comboBox" RenderTransformOrigin="0.502,-0.751" Margin="129,112,111,217" DropDownOpened="ComboBox_OnDropDownOpened"/>

您的事件处理程序将如下所示:

private void ComboBox_OnDropDownOpened(object? sender,EventArgs e)
{
   comboBox.Items.Clear();
   var processes = Process.GetProcesses();
   for (var i = 1; i < processes.Length; i++)
      comboBox.Items.Add($"{processes[i].ProcessName} - {processes[i].Id}");
}

另一种方法是公开在构造函数中初始化并绑定到XAML中ItemsSource的{​​{1}}的进程集合。然后您可以根据需要更新集合,例如通过计时器或用户触发的命令定期更新。

您可以采用以下选项之一来实施集合:

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。