0

C#Winformsを使用してユーザーコントロールを作成しました。ユーザーコントロールには、次の3つのテキストボックスがあります。

  • txtStartNumber-入力のタイプはintです。
  • txtEndNumber-入力のタイプはintです。
  • txtQuantity-iputのタイプはintです。(値= txtEndNumber-txtStartNumber)

プログレスバーは番号を示します。データベースに追加されたレコードの数とその合計範囲はtxtQuantityに等しくなるように設定されます。

1つ以上のレコードが重複している場合、進行状況バーは停止します。

私の質問は次のとおりです。

  1. プログレスバーの初期値を設定するにはどうすればよいですか?
  2. プログレスバーに表示される進行状況を管理するにはどうすればよいですか?

データベースに保存する方法:

for (long i = from; i < to; i++)
{
    for (int j = 0; j < (to - from); j++)
    {
        arrCardNum[j] = from + j;
        string r = arrCardNum[j].ToString();
        try
        {
            sp.SaveCards(r, 2, card_Type_ID, SaveDate, 2);
            progressBar1.Value = j;
        }
    }
}
4

3 に答える 3

10

これを試して:

private void StartBackgroundWork() {
    if (Application.RenderWithVisualStyles)
        progressBar.Style = ProgressBarStyle.Marquee;
    else {
        progressBar.Style = ProgressBarStyle.Continuous;
        progressBar.Maximum = 100;
        progressBar.Value = 0;
        timer.Enabled = true;
    }
    backgroundWorker.RunWorkerAsync();
}

private void timer_Tick(object sender, EventArgs e) {
    progressBar.Value += 5;
    if (progressBar.Value > 120)
        progressBar.Value = 0;
}

マーキースタイルではVisualStylesを有効にする必要がありますが、更新する必要なしに、それ自体で継続的にスクロールします。進行状況を報告しないデータベース操作に使用します。

これが別のプログレスバーチュートリアルです

于 2012-11-18T12:52:37.107 に答える
0

プログレスバーでこれを行うためにループを使用することはできません。for、while、do ... whileループ、またはタイマーでコードを実行することには違いがあります。ループではコードはすぐに実行されますが、これは表示されません。タイマーでは表示されます。カウンターの場合はループを入れようとしても、機能しません。

for(int i=a;i<b;++i)
{
    if (cnt < 1000000)
    {
        IncrProgressBar();
        cnt++;
    }
    else
    {
        cnt = 0;
    }
}

プログレスバーを使用してこれを行う場合は、データベースにデータを追加するタイマーOnTickイベントコードを入力する必要があります。この場合、プログレスバーの値をインクリメントします。これは、フォームコンポーネントの他のプロパティ(テキスト、サイズなど)を変更する場合と同様です。コンポーネントの変更を確認したい場合は、タイマーを使用する必要があります。

于 2014-10-17T20:53:03.837 に答える
0

値を変更するには、次を使用します。

private void timer1_Tick(object sender, EventArgs e)
    {
        progressBar2.Value = progressBar2.Value - 15;
    }

C#では

于 2014-10-20T19:32:14.383 に答える