NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
IT rekvalifikace s podporou uplatnění. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!

Diskuze: metoda po vykresení formu

V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
lopi.trucker
Člen
Avatar
lopi.trucker:1.7.2013 14:48

čest kucííí, poradí mi někdo?
chci si udělat nazvěme to instalátor. Můj problém je v tom že mám na formu jen label (tady chci měnit jen nadpisy) a progresBar (tady chci zobrazovat jakože průběh). Vše se bude dít v kódu ten label a progres je tam jen pro dekoraci.
A co vlastně chci:
spustí se program, zobrazí se form na něm label a progresbar, chvíli např. 2 sekundy se nic nestane a pak začne nabíhat progresBar (jakože něco hledá).
A toto je můj problém když to dám do form_load tak se mi ten progres vykreslí už vyplněný, když to dám do události form_show tak se mi zobrazí jen form a potom už vyplněný.
Nemůžu za boha dojít na to jak spustit další metodu až např. po dvou vteřinách po zobrazení formu.:(

 
Odpovědět
1.7.2013 14:48
Avatar
Jan Vargovský
Tvůrce
Avatar
Jan Vargovský:1.7.2013 16:15

Použi Timer a tam event Tick, odpočítej si 2 sekundy a potom incrementuj ProgressBar

 
Nahoru Odpovědět
1.7.2013 16:15
Avatar
lopi.trucker
Člen
Avatar
Odpovídá na Jan Vargovský
lopi.trucker:2.7.2013 21:19

Hm to jsem samozřejmě použil, ale progresBar se inkrementuje, až po průchodu celou metodou tick, mám na mysli graficky. ;(

 
Nahoru Odpovědět
2.7.2013 21:19
Avatar
lopi.trucker
Člen
Avatar
lopi.trucker:2.7.2013 21:25

Hm to jsem samozřejmě použil, ale progresBar se inkrementuje, až po průchodu celou metodou tick, mám na mysli graficky. ;(

:O už jsem na to došel musel jsem vykomentovat Application.E­nableVisualSty­les();

 
Nahoru Odpovědět
2.7.2013 21:25
Avatar
lopi.trucker
Člen
Avatar
lopi.trucker:3.7.2013 9:14

Chlapi potřeboval bych poradit jak mám toto vyřešit. Ten poťáplí form se mi zobrazí, až i s vykresleným progresbarem. Jak to udělat?

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

using Microsoft.Win32;
using System.Runtime.InteropServices;
using System.IO;
using System.Diagnostics;
using System.Threading;


namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        //Timer timer1 = new Timer();
        bool regKlic = false;


        public Form1()
        {
            InitializeComponent();
            regKlic = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{33A2B31D-875D-463F-BC69-7B7BAB119A84}", true) != null;

        }

        private void Form1_Load(object sender, EventArgs e)
        {
            label1.Text = "Vyhledávám předchozí verze programu.";
            prvniProgres();
        }

        private void prvniProgres()
        {
            Thread.Sleep(2000);

            for (int i = 0; i < 5; i++)
            {
                progressBar1.Increment(25);
                Thread.Sleep(2000);
            }
        }
    }
}
 
Nahoru Odpovědět
3.7.2013 9:14
Avatar
Juraj Mlich
Tvůrce
Avatar
Juraj Mlich:3.7.2013 9:50

Skús v tom cykle zavolať metodu Invalidate. Ale niesom si istý či to bude fungovať.

 
Nahoru Odpovědět
3.7.2013 9:50
Avatar
Odpovídá na lopi.trucker
Michal Žůrek - misaz:3.7.2013 9:57

Load se volá před vykreslením.

 
Nahoru Odpovědět
3.7.2013 9:57
Avatar
lopi.trucker
Člen
Avatar
Odpovídá na Michal Žůrek - misaz
lopi.trucker:3.7.2013 10:30

to je mi jasný, že se volá před vykreslením, ale která metoda se volá až po vykreslení? zkoušel jsem i metodu show, ale tam se zase nevykreslil label a progressBar. Tak bych potřeboval poradit jak to zavolat, až po vykreslení formu. Díky za každou radu.

 
Nahoru Odpovědět
3.7.2013 10:30
Avatar
Ľuboš Čurgó
Tvůrce
Avatar
Odpovídá na lopi.trucker
Ľuboš Čurgó:3.7.2013 10:56

musis to vykreslovanie progres baru hodit na druhe vlakno, vo windows forms mas na to componentu background worker,nebudem pisat ako odtialto to pochopi snad kazdy http://tinyurl.com/d7osmzu

edit: zly link

Editováno 3.7.2013 10:59
 
Nahoru Odpovědět
3.7.2013 10:56
Avatar
Odpovídá na lopi.trucker
Luboš Běhounek Satik:3.7.2013 11:21

Do toho cyklu pridej tenhle prikaz:

Application.DoEvents

Ten zpracovava frontu zprav, kterou ty sice plnis, ale nedas ji nikde prostor ke zpracovani, dokud tva funkce prvniProgres() nedobehne, takze se to pak rovnou zpracuje vse najednou a ty nevidis plynulou zmenu.

A jak pise Michal Žůrek - misaz - z Load to prehod do Show.

Editováno 3.7.2013 11:23
Nahoru Odpovědět
3.7.2013 11:21
https://www.facebook.com/peasantsandcastles/
Avatar
lopi.trucker
Člen
Avatar
Odpovídá na Luboš Běhounek Satik
lopi.trucker:3.7.2013 11:58

Supeeeeeeeeeeeeeer dííííííííííííky ted to fachci jak ma :D jeste jednou dik dobra vilo :-D

 
Nahoru Odpovědět
3.7.2013 11:58
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 11 zpráv z 11.