将进程列表放入C#中的组合框

时间:2012-07-16 06:07:20

标签: c# winforms combobox

我想要的是,当我点击comboBox1框时,它将显示当前正在运行的所有进程。

private void comboBox1_MouseClick(object sender, MouseEventArgs e)
{
     comboBox1.Items.Clear();
     Process[] MyProcess = Process.GetProcesses();
     for (int i = 0; i < MyProcess.Length; i++)
            comboBox1.Items.Add(MyProcess[i].ProcessName + "-" + MyProcess[i].Id);
}

为什么拒绝工作? :■

3 个答案:

答案 0 :(得分:2)

更好地使用ListBox,因此您可以在自己的行上显示所有进程,而不必像现在在组合框/下拉列表中那样将其删除

了解更多信息,请点击此处 http://msdn.microsoft.com/en-us/library/1f3ys1f9.aspx

像这样更改代码进行测试

添加此方法

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

}

并在您的表单中加载事件添加:

LoadProcesses();

答案 1 :(得分:2)

尝试在initializeComponets之后立即将代码放在构造函数中我的猜测是你在重新加载数据时重置每次单击时的组合框(包括单击以选择一个值),并且你当前的代码也不会更新如果使用tab来聚焦组合框,则为值!

答案 2 :(得分:0)

不知道问题是什么,但这段代码运行正常:

comboBox1.Items.Clear();
comboBox1.Items.AddRange(Process.GetProcesses().Select<Process, string>(F => F.ProcessName + "- " + F.Id).ToArray());

实际上,可能是进程更改的数量,并且可能使索引器失效....

相关问题