C# Problem z ustawieniem wartości.

0

Witam, jestem nowy na forum. Chcę zrobić coś takiego:

Kod Form1.cs:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using WindowsFormsApplication5;

namespace WindowsFormsApplication5
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

    public void button1_Click(object sender, EventArgs e)
    {
        my_class t = new my_class();
        t.testt();
    }
}

}

Kod mojej klasy:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication5
{
public class my_class : Form1
{
public void testt()
{
progressBar1.Visible = true;
progressBar1.Maximum = 1000;
for (int i = 0; i < 1000; i++)
{
progressBar1.Value++;
}
progressBar1.Value = 0;
}
}
}

Mój problem polega na tym że po kliknięciu przycisku nic się nie dzieje (progressbar jest ustawiony na publiczny). Proszę o napisanie co robię źle.

1

Zakładam że nic się nie dzieje a formularz jest "zamrożony" podczas iteracji pętli albo nie da rady tego zauważyć bo pętla jest krótka, w zasadzie liczy tylko do 1000.
Dzieje się tak ponieważ progress poleci do 1000 a potem ponownie ustawi się na 0.
Spróbuj tak:

public void testt()
{
  progressBar1.Value = 50; // <-

  progressBar1.Visible = true;
  progressBar1.Maximum = 1000;

  for (int i = 0; i < 1000; i++)
  {
    progressBar1.Value++;
  }
  progressBar1.Value = 0;
}

Teraz zobaczysz czy progress ma nadal 50 czy 0 na koniec.
Zakładam że 0.
Druga sprawa jest taka że nie odświeżasz formy podczas progresu. Dla tego nic nie widać.

1

to co kolega napisał wyżej + odpalasz Progressbar w wątku głównym i GUI nie jest odświeżane bo pętla for zabiera cały dostępny zasób procesora. Tu masz taki na szybko przykład z użyciem BackgroundWorkera //blog.the-dargans.co.uk/search/label/Background%20Worker

1 użytkowników online, w tym zalogowanych: 0, gości: 1