Coś na styl Application.ProcessMessages() z Delphi ..

Odpowiedz Nowy wątek
2006-11-21 09:39
0

W petli rysuje mi sie ok 50 jpg-ów , lecz wyswietlaja sie one dopiero jak wszystko sie sciagnie.
Chcialbym zeby pokazywalo sie zdjecie po zdjecie, wiem ze w Delphi bylo dokonczeni pracy procka przez komende jak w temacie a jak to jest w C# ?

Pozostało 580 znaków

2006-11-21 09:42
0

Nie do konca rozumiem, co napisales, ale z nazwy metody w deplhi rozumiem, ze program zawiesza ci sie na czas sciagniecia? Zrob osobny watek sciagania.


You need to learn how to walk
before you can run

Pozostało 580 znaków

2006-11-21 09:46
0

Mam :

Application.DoEvents() ;

Chodzilo mi o to ze przy wyswietlaniu fotek program czeka az siagna sie wszystkie w petli i dopiero pozniej je wyswietla, a ja chce zeby po sciagnieciu jednej fotki juz mozna bylo ja widziec na ekranie.

Pozostało 580 znaków

2006-11-21 09:51
0

A jak wyglada Twoja petla? Zreszta jak zrobisz osobny watek, to program bedzie sobie dzialal, a sciagac sie bedzie w miedzyczasie - jest to lepsze rozwiazanie.


You need to learn how to walk
before you can run

Pozostało 580 znaków

2006-11-21 09:57
0
foreach (string strona in strony)
             {

                 System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(ikonki[j]);
                 System.Net.HttpWebResponse response = (System.Net.HttpWebResponse)request.GetResponse();
                 System.IO.Stream vStream = response.GetResponseStream();
                 System.Drawing.Bitmap vBitmap = new System.Drawing.Bitmap(vStream);

              obrazki[j] = new PictureBox();
              obrazki[j].Size = new System.Drawing.Size(100, 100);
              if (j % 5 == 0)
              {
                  obrazki[j].Location = new System.Drawing.Point(szer, wys+=200);
                  szer = 1;
              }
              else
              {
                  obrazki[j].Location = new System.Drawing.Point(szer, wys);
                  szer += 110;
              }

                obrazki[j].SizeMode = PictureBoxSizeMode.StretchImage;            
                obrazki[j].Image = vBitmap;
                this.Controls.Add(obrazki[j]);  
                j++;
                progressBar1.Value = j;
                Application.DoEvents();
            }

W tablicy mam linki do pliczków i jade sobie petelką , sciagam je do bitmapy i wrzucam do dynamicznego pictureboxa.
Tylko chcialbym jeszcze teraz zrobic tak ze po kliknieciu na ten obrazek cos sie dzieje , czyli musze obsluzyc zdarze Click() , jak to tu podpiac?

Pozostało 580 znaków

2006-11-21 10:26
0

Ja bym to zrobil w osobnym watku, byloby i elegancko i by dzialalo. Zdarzenia podpinasz tak:


obrazki[i].Click += new EventHandler(metoda_obslugujaca_zdarzenie);


You need to learn how to walk
before you can run

Pozostało 580 znaków

2006-11-21 10:58
0
johny_bravo napisał(a)

Ja bym to zrobil w osobnym watku, byloby i elegancko i by dzialalo. Zdarzenia podpinasz tak:


obrazki[i].Click += new EventHandler(metoda_obslugujaca_zdarzenie);

Jakis prosty przykladzik jak uzyc tej metody obslugujacej zdarzenie:)

Pozostało 580 znaków

2006-11-21 11:04
0


void MojaMetodaObslugujacaZdarzenie(object sender, EventArgs args)
{
MessageBox.Show("UWAGA! Wlasnie gdzies kliknales ;P");
}
...
obrazki[i].Click += new EventHandler(MojaMetodaObslugujacaZdarzenie);


You need to learn how to walk
before you can run

Pozostało 580 znaków

2006-11-21 11:32
0
johny_bravo napisał(a)


void MojaMetodaObslugujacaZdarzenie(object sender, EventArgs args)
{
MessageBox.Show("UWAGA! Wlasnie gdzies kliknales ;P");
}
...
obrazki[i].Click += new EventHandler(MojaMetodaObslugujacaZdarzenie);

Super dzieki, a sluchaj mam przycisk i pod tym przyciskiem stworzona tablica bitmap, leci saobie petelka i rysuje mi bitmapki na panelu, teraz chcialem zrobic cos takiego ze jezeli ktos zmaksymalizuje program to chcialbym te bitmampki przerysowac jezcze raz zeby np ilosc ich w poziomie byla uzalezniona od szerokosci panelu. I w zwiazku z tym pytanie jezeli mam tablice pod zdarzeniem onclick przycisku pierwszegoi chce przekazac ta tablice zeby bylo mozna do niej sie dotsac na poziomie zdarzenia Form.Onresize.
Czyli mam zdarzenie:

 private void Form1_Resize(object sender, EventArgs e)
        {
            Tu jest powiedzmy tablica_nr_1;

        }

i:

 private void Form1_Resize(object sender, EventArgs e)
        {
           Jak uzyc tablicy_nr_1 tutaj ?

        }

I w tym zdarzenie chcialbym tez miec ta tablice ktora stworzylem wi nnym zdarzeniu.
Jak ja tu przekazac?

Pozostało 580 znaków

2006-11-21 11:55
0

Zakladam, ze te bitmapki sa podpiete do PictureBoxow? Wtedy mozesz iterowac przez kolekcje kontrolek formatki i podejmowac konkretne akcje, jesli to PictureBox:


foreach(Control vControl in Controls)
if(vControl is PictureBox)
{
PictureBox vPictureBox = (PictureBox) vControl;
zrob_cos(vPictureBox.Bitmap);
}


You need to learn how to walk
before you can run

Pozostało 580 znaków

2006-11-21 12:14
0
johny_bravo napisał(a)


foreach(Control vControl in Controls)
if(vControl is PictureBox)
{
PictureBox vPictureBox = (PictureBox) vControl;
zrob_cos(vPictureBox.Bitmap);
}

Czyli mogę np odwolac sie do juz narysowanych kontrolek i np je wyczyscic i porozmieszczac inaczej?

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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