Diskuze: WinForms kalkulačka

C# .NET .NET (C# a Visual Basic) WinForms kalkulačka American English version English version

Avatar
Libor Šimo (libcosenior):

Pokúsil som sa napísať jednoduchú kalkulačku objektovo vo winform a poprosil by som aby mi ju niekto skontroloval. Nemyslím bezchybnosť, ale či je to moje riešenie aspoň ako tak dobré.
http://skolka-jazyka-c.freespace.sk/…oad/file.php?…

Odpovědět 31.7.2013 19:40
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na Libor Šimo (libcosenior)
Michal Žůrek (misaz):

přečti si ten tutorial dále a postupně s novými zkušenostmi si dělej nové kalkulačky. Špatné to není, ale jde to značně vylepšit.

Nahoru Odpovědět 31.7.2013 19:55
Nesnáším {}, proto se jim vyhýbám.
Avatar
Libor Šimo (libcosenior):

Veď viem, že tam mám veľa opakovaného kódu. :(

Nahoru Odpovědět 1.8.2013 9:42
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Libor Šimo (libcosenior):

Trochu som to upravil a opakovaný kód tam asi už ani nie je. :)
http://skolka-jazyka-c.freespace.sk/…oad/file.php?…

Nahoru Odpovědět 1.8.2013 17:05
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Libor Šimo (libcosenior):

Sorry, vyššie uvedený súbor bol zmenený, doplnil som komentáre.
http://skolka-jazyka-c.freespace.sk/…oad/file.php?…

Nahoru Odpovědět 1.8.2013 17:32
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Libor Šimo (libcosenior)
Jan Vargovský:

Zkus používat mezery mezi komentáři a metodou. Ta redudantní metoda by se dala zkrátit na 10%.(přičítání čísla do textboxu). Tak jako ty metody se znaménky. Inicializovat tu třídu Vypocty pokaždé, když kliknu na tlačítko je blbost.
EDIT: ty komentáře jsi trošku přehnal, to že máš psát komentáře neznamená, že máš psát komentář ke každému řádku. Nemusíš psát "inicializoval jsem lokální promměnnou typu string, která udává ... ". Když jde z kodu jasně vidět, co kód dělá, nemusí být okomentovaný.

Editováno 1.8.2013 18:14
 
Nahoru Odpovědět 1.8.2013 18:13
Avatar
Kit
Redaktor
Avatar
Odpovídá na Libor Šimo (libcosenior)
Kit:
/// Prvá premenná typu double
/// Druhá premenná typu double
/// Premenná typu reťazec na zápis číslic do textboxu
/// Premenná typu char na vyjadrenie matematickej operácie
/// Zapísanie reťazca "1" do textboxu

To má být co? Než takové komentáře, tak raději žádné. Nikdy do komentáře nepiš to, co je zřejmé ze zápisu programu, protože při každé změně to pak budeš muset měnit na dvou místech. V programu i v komentáři.

Nahoru Odpovědět 1.8.2013 18:23
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Libor Šimo (libcosenior):

Díky

Editováno 1.8.2013 18:30
Nahoru Odpovědět 1.8.2013 18:28
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Libor Šimo (libcosenior):

Ďakujem. Zmenil som niečo.
Triedu som inicializoval len raz pri deklarácii premenných a v metódach so znamienkami používam len inštanciu.
Ale tú redundantnú (piate kolo u vozu - wikipédia) metódu neviem ako skrátiť na 10%.
Komentáre som prehnal, už nebudem až taký iniciatívny. :)

Nahoru Odpovědět 1.8.2013 18:29
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Libor Šimo (libcosenior)
Jan Vargovský:

Každé tlačítko ti přidává k výslednému textu přece text, který je v tlačítku. To znamená, že ti stačí vytvořit 1 univerzální metodu, která si přetypuje sender na Button a z něj vytáhne vlastnost Text a tu pak přičte k číslu, ne?

 
Nahoru Odpovědět 1.8.2013 18:40
Avatar
Libor Šimo (libcosenior):

Blbne mi net.

Editováno 1.8.2013 18:46
Nahoru Odpovědět 1.8.2013 18:45
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Libor Šimo (libcosenior):

Blbne mi net.

Editováno 1.8.2013 18:46
Nahoru Odpovědět 1.8.2013 18:45
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Libor Šimo (libcosenior):

Ďakujem, ale to je ešte nad moje znalosti.
(object sender, EventArgs e) ešte neviem používať.

Nahoru Odpovědět 1.8.2013 18:46
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Libor Šimo (libcosenior)
Jan Vargovský:

object sender ti udává jaký objekt(v tomto případě komponenta - Button) vyvolal tu událost. EventArgs jsou argumenty, resp. Data, které projdou metodou. Argumenty v této podobě v sobě nic nedrží, jsou tam jen defaultní metody děděné z třídy object. Jinak tam můžou držet data jako pozice kurzoru(Mouse­EventArgs) atd.
EDIT:
Určitě jsi to už někde viděl

Button b = (Button)sender;
Button b = sender as Button;
Editováno 1.8.2013 18:56
 
Nahoru Odpovědět 1.8.2013 18:51
Avatar
Libor Šimo (libcosenior):

Ďakujem za vysvetlenie. K tomuto sa ešte musím v tutoriáloch dostať. Zatiaľ som mimo.

Nahoru Odpovědět 1.8.2013 19:02
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na Jan Vargovský
Libor Šimo (libcosenior):

Nájdeš si chvíľku času a napíšeš konkrétny príklad?

Nahoru Odpovědět 1.8.2013 20:17
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Jan Vargovský
Redaktor
Avatar
Jan Vargovský:

Jednoduše si vytvoř nějakou metodu třeba:

private void ClickOnButton (object o, EventArgs e)
{
TvojePromennaSCislem += ((Button)o).Text;
}

Tuto metodu přiřaď tlačítkům 0-9. Nevím jak už jsi to tam přesně měl. Tak snad to pochopíš.

 
Nahoru Odpovědět 1.8.2013 20:54
Avatar
Odpovídá na Jan Vargovský
Libor Šimo (libcosenior):

Díky, pozriem sa na to keď prídem domov z práce.

Nahoru Odpovědět 2.8.2013 6:53
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na Jan Vargovský
Libor Šimo (libcosenior):

Upravil som to podľa tvojej rady, ale nezdá sa mi to o 90% zmenšené, aj keď to je asi objektovo správnejšie.
http://skolka-jazyka-c.freespace.sk/…oad/file.php?…

Nahoru Odpovědět 2.8.2013 17:42
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Libor Šimo (libcosenior)
Kit:

Ty komentáře jsou šílené. To ti prostředí generuje automaticky? Když je všechny zrušíš, program bude čitelnější.

Nahoru Odpovědět 2.8.2013 18:12
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Libor Šimo (libcosenior):

Tie komentáre sú pre mňa. Keď to otvorím o rok a celý čas nebudem programovať, nebudem bez nich vedieť, čo som myslel.
Komentáre si prosím nevšímaj. Zaujíma ma, či je ten kód dobrý alebo stojí za prd. :D

Nahoru Odpovědět 2.8.2013 18:24
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Libor Šimo (libcosenior)
Jan Vargovský:

Protože to ani zmenšené není. Dej mi chvíli a uploadnu ti to example project.

 
Nahoru Odpovědět 3.8.2013 14:35
Avatar
Kit
Redaktor
Avatar
Odpovídá na Jan Vargovský
Kit:

Jak se to stahuje? A proč je to exe, když to má být zip? To vypadá spíš na nějaký malware.

Nahoru Odpovědět 3.8.2013 14:47
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Kit
Jan Vargovský:

Takové komentáře jsou defaultní ve VS, když napíšeš /// ty komentáře jsou dobré. Ovšem pro takové metody jsou spíše na obtíž. Každopádně ty komenty se ti potom přímo ukazuji přes nápovědu, snad jsi někdy ve VS dělal, tak víš co myslím.

 
Nahoru Odpovědět 3.8.2013 14:48
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Kit
Jan Vargovský:

Teď nato koukám, doporučíš mi nějaké free upload file hosting? Nechce se mi to držet na dropboxu a zároveň chci, aby to tu bylo pro ostatní i v budoucnu.

 
Nahoru Odpovědět 3.8.2013 14:50
Avatar
Kit
Redaktor
Avatar
Odpovídá na Jan Vargovský
Kit:

Ne, ve VS jsem nikdy nedělal, ale už jsem začal tušit, že to generuje nějaké IDE.

Nahoru Odpovědět 3.8.2013 14:51
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Libor Šimo (libcosenior)
Jan Vargovský:

http://www.sendspace.com/file/cnp23e - tje ten example. Když to bude číst někdo z Adminů, tak smažte ten post výše, alespoň to URL. Je to zas fileupload co tam chce nějaké download tools ještě k tomu.

 
Nahoru Odpovědět 3.8.2013 14:56
Avatar
Kit
Redaktor
Avatar
Odpovídá na Jan Vargovský
Kit:

Mně se osvědčilo http://uloziste.com - dá se tam nacpat 300 MB přes HTTP nebo 1500 MB přes FTP. Vydrží to tam přes měsíc, pak to smažou. Dá se to průběžně updatovat podle potřeby. Obsah se skrývá za URL, které sem pošleš.

Nahoru Odpovědět 3.8.2013 14:57
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Kit
Jan Vargovský:

Jo díky. K těm komentům: http://2i.cz/5bb96b4192 takhle nějak ti to pak napovídá :)

 
Nahoru Odpovědět 3.8.2013 15:00
Avatar
Kit
Redaktor
Avatar
Odpovídá na Jan Vargovský
Kit:

Aha, takže jakási obdoba standardizovaných dokumentačních komentářů. Nic pro mne, ty standardizované se mi líbí víc.

Nahoru Odpovědět 3.8.2013 15:06
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Jan Vargovský
Libor Šimo (libcosenior):

Veľmi pekne ďakujem. Až teraz som to pochopil.
Hlavné je to, že pri použití metód s ((Button)sender)­.Text alebo (sender as Button).Text je potrebné pridať do triedy Form.Designer.cs (do konkrétneho Button) riadok s metódou napr.:

this.btn1.Click += new System.EventHandler(this.OnNumericButtonClick);

pričom btn1 je Button s textom "1" a OnNumericButton­Click je metóda v hlavnom programe.

Teraz to už mám dobre?
http://skolka-jazyka-c.freespace.sk/…oad/file.php?…

Editováno 4.8.2013 10:10
Nahoru Odpovědět 4.8.2013 10:09
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Libor Šimo (libcosenior)
Jan Vargovský:

Do designéru nic nepises. Jen vytvoris metodu a pak ji priradis těm tlačítkům v properties - events.

 
Nahoru Odpovědět 4.8.2013 10:30
Avatar
Libor Šimo (libcosenior):

Ak myslíš Form1.cs[Design], tak tam v properties events nevidím.
Poradíš ako na to?

Nahoru Odpovědět 4.8.2013 11:20
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Libor Šimo (libcosenior):

Sorry, už som to našiel. :[
Takto je to oveľa jednoduchšie a všetko spraví visual.

Editováno 4.8.2013 11:27
Nahoru Odpovědět 4.8.2013 11:26
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Libor Šimo (libcosenior):

Môj problém je asi ten, že som naučený z "C" všetko písať sám. 8|

Nahoru Odpovědět 4.8.2013 11:41
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Libor Šimo (libcosenior)
Jan Vargovský:

No do toho automaticky generovaného designer initialize kodu by jsi správně neměl zasahovat. A co, je to lepší napsat 1 metodu a udělat to takhle pro všechny tlačítka, než abys psal 10 redudantních metod ne?

 
Nahoru Odpovědět 4.8.2013 13:42
Avatar
Libor Šimo (libcosenior):

To je samozrejmé a ďakujem ešte raz. :)

Nahoru Odpovědět 4.8.2013 14:33
Aj tisícmíľová cesta musí začať jednoduchým krokom.
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 38 zpráv z 38.