C# 在C语言中将进程列表放入组合框#

C# 在C语言中将进程列表放入组合框#,c#,winforms,combobox,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框时,它将显示当前正在运行的所有进程

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);
}
private void comboBox1\u鼠标单击(对象发送器,鼠标指针)
{
comboBox1.Items.Clear();
Process[]MyProcess=Process.getprocesss();
for(int i=0;i

为什么它拒绝工作s

最好使用列表框,这样您就可以在自己的行中显示所有进程,而不必像现在在组合框/下拉列表中那样将其下拉

有关更多信息,请查看此处

像这样更改代码以进行测试

添加此方法

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));

}

最好使用列表框,这样您就可以在自己的行中显示所有进程,而不必像现在在组合框/下拉列表中那样将其下拉

有关更多信息,请查看此处

像这样更改代码以进行测试

添加此方法

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));

}

试着在初始化组合后将代码放入构造函数中。我猜,在重新加载数据时,每次单击都会重置组合框(包括单击选择值),而且如果使用tab键聚焦组合框,当前代码也不会更新值

尝试将代码放在初始化组合后的构造函数中。我猜,在重新加载数据时,每次单击都会重置组合框(包括单击选择值),而且如果使用tab键聚焦组合框,当前代码也不会更新值

不知道问题出在哪里,但这段代码工作正常:

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

实际上,可能是进程更改的数量,这会使索引器无效……

不知道问题出在哪里,但此代码工作正常:

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

实际上,可能是进程更改的数量,这可能会使索引器无效……

我已经尝试过了,它可以工作了。但正如上面所说,listbox更适合这个任务,而且它也适用于我您的代码工作正常,您有什么具体问题。。。。“拒绝工作”有点含糊不清。你是否尝试过在表单加载中加载你的组合框,而不是使用鼠标单击,并且更具体地说明什么不起作用,因为对我们来说,你的代码是有效的。我已经尝试过了,它是有效的。但正如上面所说,listbox更适合这个任务,而且它也适用于我您的代码工作正常,您有什么具体问题。。。。“拒绝工作”有点含糊不清。您是否尝试过在表单加载中加载组合框,而不是使用鼠标单击,并且更具体地说明什么不起作用,因为您的代码对我们是有效的。@AaronHoush没问题,很乐意帮助@AaronHoush没问题,很乐意帮忙!