1

私のwinformには、プログラムが処理しているファイルの数に基づいて増加するプログレスバーがあります。1 つのボックス (win xp) では正常に動作しますが、もう 1 つのボックス (winserver 2008) では動作しません。プロセスが終了するまでに、バーは完全には満たされていません。どちらも同じ .net Framework 3.5 を持っています

private void data_process()
    {
        int progress_num = (100/checkedListBox1.Items.Count);
        .......
         progressBar1.Value = progressBar1.Value + progress_num;}

なぜなのかご存知ですか?より良い解決策はありますか?

------これは新しいコードです

private void button1_Click(object sender, EventArgs e)
{
        progressBar1.Value = 0;
        richTextBox1.Clear();
        richTextBox1.Focus();
        if (checkedListBox1.CheckedItems.Count < 1)
        {
            MessageBox.Show("No file is selected", "Warning");

        }

        else
        {
            if ((region != null) && (venue != null) && (lhversion != null) && (release_version != null) && (desc != null))
            {
                progressBar1.Maximum = checkedListBox1.Items.Count + 3;
                progressBar1.Step = 1;
                //progressBar1.Value = progressBar1.Value + 10;
                progressBar1.PerformStep();
                login();
                //progressBar1.Value = progressBar1.Value + 10;
                progressBar1.PerformStep();
                data_process();
                //progressBar1.Value = progressBar1.Value + 10;
                progressBar1.PerformStep();
                if (user_in == true)
                {
                    richTextBox1.SelectionColor = Color.Blue; 
                    richTextBox1.AppendText("Done");
                }
            }

 private void data_process()
 {
            string line;
            //int progress_num = (70/checkedListBox1.Items.Count);

            foreach (object itemChecked in checkedListBox1.CheckedItems) // for each selected file
            {
                  ...
                  progressBar1.PerformStep();
            }
}
4

1 に答える 1

3

ネイティブ コマンドを使用して、増分を計算せずにプログレス バーを増分してみます
(項目が 100 を超えるとどうなりますか?)

progressBar1.Maximum = checkedListBox1.Items.Count;
progressBar1.Step = 1;
...
progressBar1.PerformStep();
于 2012-05-09T20:43:39.530 に答える