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

Člen

Zobrazeno 7 zpráv z 7.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
V momentě, kdy máš ovládací prvek, který má možnost pohybovat
kurzorem (jako TextBox), tak to na šipky nereaguje - ani v KeyDown ani KeyUp
ani KeyPress.
Několikrát jsem se k tomu dostal a většinou jsem to po nějaké době
testování udělal jinak (bez TextBoxu), protože to nebylo tak nutný.
Napadá mě, že jde zachytit událost přímo ze systému a ne
prostřednictvím události ovl. prvku, tak by to třeba šlo obejít ...
Malo by tam byť najprv asi TextBox2.Focus(), ak sa dobre pamätám.
Tomu co píšeš bych docela uvěřil, ale zaráží mě to, že když krokuju kódem po řádcích, tak při stisku šipky dolů je podmínka KeyDown splněna a program projede až k příkazu TextBox.Select(), jede dál, ale příkaz neprovede. Když místo TextBox.Select() napíšu jiný příkaz, (třeba textBox2.Text="Blabla") tak ho provede. Proto si myslím, že chyba nebude v tom, že by program nezachytil při stisku šipky dolů událost KeyDown, nýbrž v samotném příkazu TextBox.Select(), který ale v jiných procedurách funguje. Mimochodem, co píše jozef_i je pravda, ale chová se to úplně stejně. Prostě příkaz TextBox.Focus() neprovede. Proč ho ale provede, když projíždí stejnou proceduru po stisku klávesy ENTER ???.
Napada mne nekolik veci kolem udalosti. Ale VB nepouzivam.
event.keycode = kod klavesy
event.target = element
Ale, kdyz se pouzije odkaz, ten ma na sobe vazane presmerovani, tam je treba
zastavit funkci, ktera se spousti s odkazem
<a href="jina_stranka.htm" onclick="funkce(); return false;"></a> - tohle provede funkci a zustane stat
<a href="jina_stranka.htm" onclick="funkce();"></a> - tohle hned presmeruje, driv nez se funkce dokonci
<a href="jina_stranka.htm" onclick="return funkce();"></a> - funkce rozhodne, zda se provede odkaz ci ne
Cili, mozna je treba pridat do funkce neco jako stopPropagation
To by mohlo vysvetlit projiti cyklu.
Jinak, jak pise jozef_i, k objektu bych pristupoval pres focus(). Select,
selection je oznaceni textu. Ale, neznam terminologii VB, takze to muze fungovat
misto focus.
V JS se treba pouziva take focus().
PS. Zkusil jsi reseni nejdriv vygooglovat?
A co <code>PreviewKeyDown</code>? A potom bacha na
<code>handled</code> . Já dělám jenom v C# (ale tam by takový rozdíl neměl být) a
nevím, v čem to máš (ve WPF určitě preview je), takže pokud to tam
nebude, sorry za spam
.
Bingo !!! Tak jsem stejnou situaci nasimuloval v jiné aplikaci a ejhle, ono
to chodí. Porovnal jsem si tedy vlastnosti TextBoxu v jedné i druhé aplikaci
a zjistil jsem, že celý problém je v tom, že jsem měl u TextBoxu vlastnost
Multiline na True. Po změně na False už to normálně funguje. Tím mi, ale
nastal další problém jak si nastavit požadovanou výšku TextBoxu, protože
se mi automaticky upravuje podle velikosti fontu.
Zobrazeno 7 zpráv z 7.