Avatar
roks
Člen
Avatar
roks:

Zdravím, jeden programátor mi pomohol s jedným kódom, definoval ho typom var, ale vyhadzuje mi chybu pri nulovej hodnote.
kód vyzerá takto :

var selectedImage = Obrazky.Single(x => x.meno == strom.SelectedNode.Text);
if (selectedImage != null)
{
// kód funkcie
}

Obrazky - list s premennými meno a obrazok.
meno - premenná v liste Obrazky
strom - treeView

Typ var mi má vyhladať, či nejaká položka v strome(treeNode) nemá rovnaký text ako meno v Liste Obrazky. Ak hej tak mám tam definovanú funkciu ale ak var = 0, tak mi vyhodi chybu v programe, že list s takým textom neexistuje. To by ani tak nevadilo, ale potrebujem týchto typov var pre dané listy pridať do stromu viac, nielen na obrázky ale aj video hudba a podobne. Nevedel by mi niekto pomôcť, ako to vyriešiť tak, aby mi nevyhadzovalo chybu?

Editováno 21.4.2013 20:56
 
Odpovědět 21.4.2013 20:37
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na roks
Petr Nymsa:

Využívej prosím tlačítka přidat kód (druhé zprava). Var je obecně špatný, ale používá se právě při dotazech LINQ. Metoda Single říká "vrátí element pokud je v kolekci obsažen pouze jednou jinak vyhodí vyjímku". V listě máš pravděpodobně položek se stejným názvem víc. var se nepoužívá pro klasickou práci s objekty !

Co přesně požaduješ ? Vyhledat kolik máš v v listě stejných položek ?

Nahoru Odpovědět 21.4.2013 20:52
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na roks
David Čápka:

Místo var dej typ, jehož instance v listu jsou.

Nahoru Odpovědět 21.4.2013 20:55
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
roks
Člen
Avatar
roks:

zirko : potrebujem rpesne to, aby ked kliknem na Nody v treeView, tak ku každemu textu je priradeny jeden list a ten sa zobrazi... hladal som na internete, skusil som použiť taktiež var ale nie prikaz .Single ale .SingleOrDefault a už mi to ide jak má :) ... a keď je "Var" zlý, tak aký typ by si mi odporučil? ...
sdraco : ale ja mam v liste string a aj bitmap, takže to nepojde :) ...
ale ako som už spomenul, už to ide, ale vďaka za pomoc :)

 
Nahoru Odpovědět 21.4.2013 21:09
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na roks
Petr Nymsa:

Pokud máš v listě string a Bitmapu znamená to že máš vlastní třídu. Třída můe mít klidě 15 atributů a do Treeview, listboxu, čehokoliv to stejně dáš. Při vytahování zpět to akorát přetypuješ zpět.

Příklad vytažení dat z listobxu, jeden vybraný item

MojeKrasnaSuperTrida polozka=(MojeKrasnaSuperTrida)this.listBox.SelectedItem;
Nahoru Odpovědět 21.4.2013 21:20
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na roks
David Čápka:

Tohle je důvod, proč tyto věci vůbec nemají existovat. Udělej si hezky třídu s dvěma atributy.

Nahoru Odpovědět 21.4.2013 21:27
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na David Čápka
Petr Nymsa:

Tak to on by i snad měl mít ne ? Jak jinak dokázal dát od Listu string a bitmapu ? var mě taky přijde jako výmysl, i když velmi zřídka se použije. Na C# se mi právě líbí typovatelnost, v PHP mi to přijde strašně zmatečný, když do stejný proměnný jednou ložím string, podruhý číslo a potřetí z něj mám pole, ale jde o zvyk.

Nahoru Odpovědět 21.4.2013 21:30
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
roks
Člen
Avatar
roks:

Áno mám list vytvorený z triedy. Aha takže stačí keď miesto var dám ako typ názov mojej triedy?

 
Nahoru Odpovědět 21.4.2013 21:39
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na roks
Petr Nymsa:

Úplně nevíš která bije. Přečti si zdejší tutoriály, nejdříve základy, až to budeš zvládat začni s OOP. Ano můžeš, int je také objekt

Nahoru Odpovědět 21.4.2013 21:43
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
roks
Člen
Avatar
roks:

ale viem, spravil som to tak, jak som to mal, ale prepísal som namiesto var nazov mojej triedy jak si spomenul a funguje to ;)

 
Nahoru Odpovědět 21.4.2013 21:48
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na roks
Petr Nymsa:

Dobře, ale kdyby jsi měl základní znalosti tohle by jsi měl vědět.

if(n!=null)**{}**

se nevolá funkce ale podmínka atd :)

Nahoru Odpovědět 21.4.2013 21:49
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
roks
Člen
Avatar
roks:

ok ok, uznávam moja chyba... mám základné znalosti ale mýliť sa je ľudské :)

 
Nahoru Odpovědět 21.4.2013 21:54
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na roks
Petr Nymsa:

Já to nemyslel zle ;) Ale aby jsi do budoucna třeba neříkal něco co je vlastně špatně. Já se také stále učím a vlastně každý z nás :)

Nahoru Odpovědět 21.4.2013 21:57
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
roks
Člen
Avatar
roks:

ok tak dík :)

 
Nahoru Odpovědět 21.4.2013 22:03
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.