Měnová kalkulačka

C# .NET WPF Měnová kalkulačka

V tomto video-tutoriálu bude názorně předveden postup, jak ve WPF C# naprogramovat měnovou kalkulačku převádějící koruny na eura a obráceně podle aktuálního měnového kurzu, který si program automaticky stáhne z webových stránek České Národní Banky.

Začátky jednotlivých částí:
00:03 - Založení WPF projektu
00:18 - Design (XAML)
06:35 - Kód pro převod měny pomocí tlačítek
09:00 - Ošetření vyjímek (blbuvzdornost)
10:53 - Výpočet v reálném čase (zrušení tlačítek)
11:54 - Ošetření zacyklení
15:15 - Stahování aktuálního kurzu z internetu
21:38 - Krokování kódu stahujícího kurzy
22:11 - Závěr


 

Stáhnout

Staženo 624x (56.16 kB)
Aplikace je včetně zdrojových kódů v jazyce C#

 

  Aktivity (1)

Článek pro vás napsal Petr
Avatar
Ing. Petr Voborník, Ph.D. se specializuje na .NET C# technologie a vyučuje programování na Univerzitě Hradec Králové a na střední škole Podorlické vzdělávací centrum.

Jak se ti líbí článek?
Celkem (20 hlasů) :
4.954.954.954.954.95


 



 

 

Komentáře
Zobrazit starší komentáře (4)

Avatar
Petr
Redaktor
Avatar
Petr:

WebClient přebírá nastavení proxy z Internet Exploreru. Kdyby mělo být jiné, pak má vlastnost Proxy, do které se přiřazuje objekt třídy WebProxy, kam se dá vše potřebné nastavit.

 
Odpovědět 28.2.2013 21:57
Avatar
1254
Člen
Avatar
1254:

Vyborný návod. Všetko je vysvetlené krátko a jednoducho. Ďakujem.

 
Odpovědět  +3 2.6.2013 16:54
Avatar
beibovaneki
Redaktor
Avatar
beibovaneki:

Ahoj, mám takový problém. Stáhnul jsem si tuhle aplikaci a nefunguje mi správně. Kurz se stahuje špatně, protože to asi nebere tu čárku, a proto je pak kurz 1000krát tak velký. Můžete mi poradit, jak byh to spravil?

 
Odpovědět 24.12.2014 16:00
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na beibovaneki
Jan Vargovský:

Kdyby došlo k chybě při parsování stáhnutého kurzu, tak by se to bralo jako vyhození vyjímky, takže by to nepřevedlo vůbec. Můžeš říct jaké hodnoty dostáváš? Popřípadě si to můžeš otevřít sám, dát tam breakpoint a kouknout se co ti to tam dělá.

 
Odpovědět  +1 24.12.2014 16:14
Avatar
beibovaneki
Redaktor
Avatar
beibovaneki:

Podle mě to není chyba. Jenom to z toho staženého stringu desetinnou čárku nebere jako desetinnou čárku, ale jako čárku mezi tisícovkami. (př.: 1 EUR = 27,660.00)

 
Odpovědět 24.12.2014 17:42
Avatar
Petr
Redaktor
Avatar
Odpovídá na beibovaneki
Petr:

Chce-li to místo čáry tečku, pak stačí dát s.Replace(',', '.'). Ale tady bych to spíš typoval na fakt, že některé měny nemají kurz vyjádřený 1:1, ale třeba 1:100 nebo 1:1000. Tento parametr udává hodnota na konci prvního řádku, kde je napsáno "Množství: 1". Je-li tam něco jiného než 1, pak je třeba kurz touto hodnotou vydělit. Metoda počítající i s tímto parametrem by pak mohla vypadat následovně.

private double StahniKurz(string mena)
{
    WebClient wc = new WebClient();
    string s = wc.DownloadString(String.Format(
        "http://www.cnb.cz/miranda2/m2/cs/financni_trhy/devizovy_trh/kurzy_devizoveho_trhu/vybrane.txt?mena={0}&od={1}&do={2}",
        mena, DateTime.Today.AddDays(-7).ToString("dd.MM.yyyy"), DateTime.Today.ToString("dd.MM.yyyy"))).TrimEnd();

    int iEnd = s.IndexOf('\n');
    int iStart = s.LastIndexOf(':', iEnd);
    string sMnozstvi = s.Substring(iStart + 1, iEnd - iStart - 1).Trim();
    double mnozstvi = Convert.ToDouble(sMnozstvi);

    s = s.Substring(s.LastIndexOf('|')+1);
    return Convert.ToDouble(s) / mnozstvi;
}
Editováno 25.12.2014 0:20
 
Odpovědět  +1 25.12.2014 0:19
Avatar
beibovaneki
Redaktor
Avatar
Odpovídá na Petr
beibovaneki:

Díky. Musel jsem tam dát s = s.Replace(',', '.'). Tím poměrem to sice nebylo, ale za to ti taky děkuju.

 
Odpovědět 25.12.2014 13:20
Avatar
bem.jiri12
Člen
Avatar
bem.jiri12:

pěkné a velmi naučné videjko jako vždy, děkuji moc. A chci se zeptat proč jsou použité dva gridy? Resp. ten původní automaticky vygenerovaný WPFkem nikde nepoužíváš, pouze jsi přes něj roztáhl další grid. Něják sem nepochopil jestli to má nějaký důvod a účel?

 
Odpovědět 3.6.2015 11:35
Avatar
Petr
Redaktor
Avatar
Odpovídá na bem.jiri12
Petr:

Samozřejmě by bylo možné použít rovnou i hlavní grid okna, ovšem ten má výsadní postavení jako jeho hlavního kontejneru (Content nikoli Children), který je vždy právě jeden. Kdybych jej později chtěl ještě něčím okolo doplnit, osamostatnit do komponenty, posunout třeba jen do rohu okna, transformovat či animovat nebo odstranit to tak by s tím byl problém. Proto jsem vše umístil do samostatného gridu, aby případné další úpravy, byť třeba ani žádné neplánuji, neznamenaly, že kvůli tomu budu tento grid nějak dále dělit a činit další obsah závislý na tom stávajícím.

 
Odpovědět 3.6.2015 12:35
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 10 zpráv z 14. Zobrazit vše