[英]Putting a process list into a combo box in C#
我想要的是,當我單擊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);
}
為什么拒絕工作? :■
最好使用ListBox,這樣您就可以在自己的行上顯示所有進程,而不必像現在在組合框/下拉列表中那樣將其下拉
有關更多信息,請參見此處http://msdn.microsoft.com/zh-cn/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();
嘗試將代碼放在initializeComponets之后的構造函數中,我的猜測是您在每次重新加載數據時重置每次單擊時的組合框(包括單擊以選擇一個值),而且如果您重新加載,當前代碼也不會更新這些值使用標簽聚焦組合框!
不知道問題出在哪里,但是這段代碼可以正常工作:
comboBox1.Items.Clear();
comboBox1.Items.AddRange(Process.GetProcesses().Select<Process, string>(F => F.ProcessName + "- " + F.Id).ToArray());
實際上,可能是過程更改的數量,並且這可能會使索引器無效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.