0

私が望むのは、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);
}

なぜそれは働くことを拒否するのですか?:s

4

3 に答える 3

2

リストボックスを使用すると、コンボボックス/ドロップダウンで現在行っているようにドロップダウンするのではなく、すべてのプロセスを独自の行に表示できます

詳細については、こちらを ご覧ください 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();
于 2012-07-16T06:09:58.280 に答える
2

initializeComponets の直後にコンストラクターにコードを入れてみてください。私の推測では、データをリロードするたびにクリックするたびにコンボボックスをリセットし (値を選択するためのクリックを含む)、現在のコードは値を更新しません。タブを使用してコンボボックスにフォーカスしてください!

于 2012-07-16T06:18:37.813 に答える
0

何が問題なのかわかりませんが、このコードは正常に動作します:

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

実際には、おそらくプロセス変更の数であり、それによってインデクサーが無効になる可能性があります....

于 2012-07-16T06:35:53.507 に答える