Witam,
Piszę programik w Visual Studio 2010 w C++
Chciałbym się dowiedzieć w jaki sposób "odświeżać" TextBox'y za pomocą klasy znajdującej się wewnątrz głównego Form'u.
Chodzi o to, że mam główną klasę 'Form', w niej klasę 'Algebra' wykonującą obliczenia. Chce, żeby metoda 'Licz' klasy 'Algebra' odświeżała na bieżąco (wraz z postępem obliczeń ) pewne pola TextBoxy w klasie głównej Form. Udało mi się zrobić 'delegate' , ale nie załatwia to problemu. Mój kod :
Klasa Form w skrócie :
public ref class Form1 : public System::Windows::Forms::Form
{
private : // jakies tutaj Labele i TextBox'y
private: System::Void start_Click(System::Object^ sender, System::EventArgs^ e) {
ackley = new Ackley();
sw= gcnew SW( 5, 1 , 1000000 , 0.98, ackley ,1); // sw klasa obliczająca
sw->method += gcnew SW::UpdateLabel(this , &Form1::updateFields); // delegate
sw->symulate();
}
}
public : void updateFields(double temp )
{
this->MojTextBox->Text=Convert::ToString(temp);
}
Klasa SW w skrócie :
public ref class SW{
public : int aktualna_temperatura;
public :delegate void UpdateLabel(double temp );
public : UpdateLabel^ method;
public : void update()
{
method(this->aktualna_temperatura);
}
public:symulate(){
for ( i = 0 ; i< 1000 ; i++)
{
aktualna_temperatura = i*10; // tutaj jakieś obliczenia
update();
}
}
Kod działa , ale wynikiem jego jest , odświeżenie widoku, dopiero po wykonaniu wszystkich obliczeń.
Potrzebuje najprostsze rozwiązanie, próbowałem też przekazywać texboxy do zmiennej liczącej i ustawiać je- nie działa.
Pozdrawiam Michał.
próbowałem także przesłać wskaźnik na metodę