IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Neaktivní uživatel:21.7.2012 17:31

Jak mám zjistit jestli uživatel zadal číslo ?

Odpovědět
21.7.2012 17:31
Neaktivní uživatelský účet
Avatar
Neaktivní uživatel:21.7.2012 17:44

No jo,koule se vám rozbila...
Jak zjistit jakeho typu je vstup z textboxu

Nahoru Odpovědět
21.7.2012 17:44
Neaktivní uživatelský účet
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
matesax:21.7.2012 17:57

Nevím v čem děláš - ve Visual Studiu stačí v části events - vedle properties dvakrát kliknout na KeyDown - což je stejné, jako když do inicializace - či do desing módu přidáš

this.textBox1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox1_KeyDown);

No a pak musíš tuto metodu přidat (this.textBox1_Ke­yDown) - tedy:

 private void textBox1_KeyDown(object sender, KeyEventArgs e)
        {
}

No a pak už jen ošetříš ten vstup - co uživatel zadal získáš nejjednodušeji e.KeyData - kde e je KeyEventArgs - v tomot případě.

if (e,KeyData == Keys.0 || e,KeyData == Keys.1,...

Ale lepší bude udělat list čísel a ten projít tímto vstupem...

 
Nahoru Odpovědět
21.7.2012 17:57
Avatar
matesax
Tvůrce
Avatar
Odpovídá na matesax
matesax:21.7.2012 18:01

Pardon místo

if (e,KeyData == Keys.0 || e,KeyData == Keys.1

to má být:

if (e.KeyData == Keys.0 || e.KeyData == Keys.1

Ale toto je vlsatně blbost - musí to být pomocí key value:

 char j = ConvertToChar(e.KeyValue);
if (j == '1' || j == '2' || j == '3',...)
 
Nahoru Odpovědět
21.7.2012 18:01
Avatar
matesax
Tvůrce
Avatar
Odpovídá na matesax
matesax:21.7.2012 18:06

Nejlepší bude udělat metodu pro zjištění zda je to číslo:

 private bool IsNumber(char n)
{
int p = 0;
return int.TryParse(n.ToString(), out p);
}

No a pak jen:

if (IsNumber(ConvertToChar(e.KeyValue))
{
     //...
}
 
Nahoru Odpovědět
21.7.2012 18:06
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
matesax:21.7.2012 18:14

A pokud počítáš s desetinnými hodnotami tak udělej vyjímku pro oddělovač - ten ale musíš zjistit - aby to běželo i v zemích s jinými oddělovači:

System.Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencyDecimalSeparator
 
Nahoru Odpovědět
21.7.2012 18:14
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
matesax:21.7.2012 21:31

Jak jsi dopadl?

 
Nahoru Odpovědět
21.7.2012 21:31
Avatar
Kit
Tvůrce
Avatar
Odpovídá na matesax
Kit:21.7.2012 21:35

Desetinné hodnoty je lepší ve hrách nepoužívat. Nejlépe ani v účetních programech. Float je prostě určen k jiným účelům.

Nahoru Odpovědět
21.7.2012 21:35
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Kit
matesax:21.7.2012 21:39

Sorry - ale nač složitě spritovat na integr (tedy to rozdělení není složité - stačí regex výraz, ale ta práce s tím celkově), když bych dělal jednoduchou hru,...

 
Nahoru Odpovědět
21.7.2012 21:39
Avatar
Kit
Tvůrce
Avatar
Odpovídá na matesax
Kit:21.7.2012 21:45

S intem se lépe pracuje. Je přesnější, než float. Záleží na konkrétním použití. Na sčítání bodů a financí je int rozhodně lepší. Na ukládání souřadnic ve 2D bych však klidně použil i Complex.

Nahoru Odpovědět
21.7.2012 21:45
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Kit
matesax:21.7.2012 21:59

Ano, ale vymýšlet jak pracovat s intem, jakožto desetinnou částí,... Vidíš věci příliš obecně - snažíš se říci, že je něco tak a tak, když vždy záleží na situaci,...

 
Nahoru Odpovědět
21.7.2012 21:59
Avatar
Kit
Tvůrce
Avatar
Odpovídá na matesax
Kit:21.7.2012 22:03

Proč vlastně potřebuješ pracovat s desetinnou částí? Drtivá většina aplikací desetinná místa vůbec nepotřebuje. Zpravidla stačí posunutá desetinná čárka.

Nahoru Odpovědět
21.7.2012 22:03
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Kit
matesax:21.7.2012 22:08

Ano - tak se to skutečně dá řešit - k čemu tedy existuje float?...

 
Nahoru Odpovědět
21.7.2012 22:08
Avatar
Kit
Tvůrce
Avatar
Odpovídá na matesax
Kit:21.7.2012 22:13

Float existuje pro práci s čísly typu float. Takových dat se dnes zpracovává velmi málo. Finance ani bodové skóre nejsou typu float, ale decimal. Pro výpočet dráhy sondy na Mars však používám právě Float. To asi neděláš.

Nahoru Odpovědět
21.7.2012 22:13
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
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 14 zpráv z 14.