【发布时间】:2020-11-11 08:46:48
【问题描述】:
我想创建一个ComboBox 来显示所有正在运行的进程。
屏幕截图如下。它只是空的。
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 事件处理程序中设置项目没有意义。在 ComboBox 中有任何项目之前,它显然不会被调用。将该代码移至 MainWindow 构造函数。
-
SelectionChanged 在您从组合框中选择一个项目时触发。一开始您的组合框是空的,因此无法触发。我建议您定期获取所有进程,例如每 5 秒一次,并将它们存储在列表或更好的可观察集合中。您可以直接绑定到组合框。
-
@Clemens 如果我但在 MainWindow 中我会收到此错误:“MainWindow”不包含“comboBox_SelectionChanged”的定义,并且没有可访问的扩展方法“comboBox_SelectionChanged”接受类型的第一个参数可以找到“MainWindow”(您是否缺少 using 指令或程序集引用?)