Thread View: alt.pl.comp.lang.csharp
8 messages
8 total messages
Started by Tomasz Kubacki
Tue, 23 Mar 2004 07:27
[Windows.Forms] tabindex + używanie entera jak klawisza tab
Author: Tomasz Kubacki
Date: Tue, 23 Mar 2004 07:27
Date: Tue, 23 Mar 2004 07:27
31 lines
1790 bytes
1790 bytes
witam,
Mam dwa textboxy:
private TextBox userTextBox;
private TextBox passTextBox;
i chciałbym przechodzić (przerzucać focus z jednego na drugi) używając
także klawisza "enter" (a nie tylko tab jak jest domyślnie).
dodałem handler:
userTextBox.KeyPress += new KeyPressEventHandler(enter_pressed);
z metodą obsługi:
private void enter_pressed(object sender,KeyPressEventArgs e )
{
if( e.KeyChar == 0xd) //enter
...
...
Tylko to rozwiązanie wydaje mi się brzydkie. Nie można tego jakoś
ładniej ustawić (np. w jakimś properties textboxa albo formatki)?
Na pewno "jakoś to się zwykło robić" - jeśli ktoś byłby tak miły i
odpisał byłbym wdzięczny,
pozdrawiam,
Tomek
Re: [Windows.Forms] tabindex + używanie entera jak klawisza tab
Author: Jacek Czapla
Date: Tue, 23 Mar 2004 10:48
Date: Tue, 23 Mar 2004 10:48
39 lines
2037 bytes
2037 bytes
Dnia 2004-03-23 08:27, Tomasz Kubacki napisałtak:
> witam,
>
> Mam dwa textboxy:
>
> private TextBox userTextBox;
> private TextBox passTextBox;
>
> i chciałbym przechodzić (przerzucać focus z jednego na drugi) używając
> także klawisza "enter" (a nie tylko tab jak jest domyślnie).
>
> dodałem handler:
>
> userTextBox.KeyPress += new KeyPressEventHandler(enter_pressed);
>
> z metodą obsługi:
>
> private void enter_pressed(object sender,KeyPressEventArgs e )
> {
> if( e.KeyChar == 0xd) //enter
> ...
> ...
>
> Tylko to rozwiązanie wydaje mi się brzydkie. Nie można tego jakoś
> ładniej ustawić (np. w jakimś properties textboxa albo formatki)?
>
> Na pewno "jakoś to się zwykło robić" - jeśli ktoś byłby tak miły i
> odpisał byłbym wdzięczny,
>
Rozumiem, że w if przestawiasz Focus.
IHMO robi się właśnie tak, jak napisałeś.
--
_____________________
Jacek Czapla
_____________________
Re: [Windows.Forms] tabindex + u¿ywanie entera jak klawisza tab
Author: Jacek Wo³oszka
Date: Tue, 23 Mar 2004 11:17
Date: Tue, 23 Mar 2004 11:17
54 lines
2416 bytes
2416 bytes
"Tomasz Kubacki" <j23tom@[oxygene_symbol_here].pl> wrote in message
news:c3ooon$mjj$1@atlantis.news.tpi.pl...
> witam,
>
> Mam dwa textboxy:
>
> private TextBox userTextBox;
> private TextBox passTextBox;
>
> i chcia�bym przechodzi� (przerzuca� focus z jednego na drugi) u�ywaj�c
> tak�e klawisza "enter" (a nie tylko tab jak jest domy�lnie).
>
> doda�em handler:
>
> userTextBox.KeyPress += new KeyPressEventHandler(enter_pressed);
>
> z metod� obs�ugi:
>
> private void enter_pressed(object sender,KeyPressEventArgs e )
> {
> if( e.KeyChar == 0xd) //enter
> ...
> ...
>
> Tylko to rozwi�zanie wydaje mi si� brzydkie. Nie mo�na tego jako�
> �adniej ustawi� (np. w jakim� properties textboxa albo formatki)?
>
> Na pewno "jako� to si� zwyk�o robi�" - je�li kto� by�by tak mi�y i
> odpisa� by�bym wdzi�czny,
>
wyprowadz sobie klase z wlasnym textboxem i z obsluga KeyPress
np.
class TextBoxEx:..
private bool b_Enter;
public bool NextCtrl
{
get { return b_Enter; }
set { b_Enter= value;}
}
private void OnKeyPress(object sender, KeyPressEventArgs e)
{
MaskedTextBox sd = (MaskedTextBox) sender;
if (sd.b_Enter)
{
FuncjaPrzenoszacaFocus(e)
}
}
Teraz jesli utworzysz instacje tej kontrolki w klasie formualrza bedziesz
mial dodatkowa wlasnosc typu bool NextCtrl
Re: [Windows.Forms] tabindex + używanie entera jak klawisza tab
Author: Tomasz Kubacki
Date: Tue, 23 Mar 2004 17:27
Date: Tue, 23 Mar 2004 17:27
12 lines
1138 bytes
1138 bytes
hej,
Dzięki wszystkim za odpowiedź
[
...a pod if robie:
SendKeys.Send(" ");
czyli wysyłam tab'a :-)
]
pozdrawiam,
Tomasz Kubacki
Re: [Windows.Forms] tabindex + używanie entera jak klawisza tab
Author: Piecu
Date: Thu, 25 Mar 2004 11:19
Date: Thu, 25 Mar 2004 11:19
15 lines
1486 bytes
1486 bytes
Użytkownik Tomasz Kubacki napisał:
> ...a pod if robie:
> SendKeys.Send(" ");
> czyli wysyłam tab'a :-)
A nie prościej:
passTextBox.Focus();
???
--
____ _
| _ \(_) ___ ___ _ _ piecu(malpka)go2.pl gg:1277308
| |_) | |/ _ \/ __| | | | --------------------------------
| __/| | __/ (__| |_| | "jutro to dziś - tyle, że jutro"
|_| |_|\___|\___|\__,_| Sławomir Mrożek (1981)
Re: [Windows.Forms] tabindex + używanie entera jak klawisza tab
Author: Tomasz Kubacki
Date: Thu, 25 Mar 2004 13:00
Date: Thu, 25 Mar 2004 13:00
10 lines
1258 bytes
1258 bytes
Piecu wrote: > A nie prościej: > passTextBox.Focus(); > ??? Jasne że prościej, ale nie znałem tego - dzięki :-) pozdrawim, Tomek Kubacki
Re: [Windows.Forms] tabindex + używanie entera jak klawisza tab
Author: Marcin Załęczny
Date: Fri, 26 Mar 2004 07:02
Date: Fri, 26 Mar 2004 07:02
19 lines
1375 bytes
1375 bytes
Dnia Thu, 25 Mar 2004 12:19:31 +0100, Piecu <piecu.NIE_...@go2.pl>
napisał:
> Użytkownik Tomasz Kubacki napisał:
>> ...a pod if robie:
>> SendKeys.Send(" ");
>> czyli wysyłam tab'a :-)
>
> A nie prościej:
> passTextBox.Focus();
> ???
>
Prosciej, ale dziala tylko w tym konkretnym przypadku ;) Pierwsze
rozwiazanie jest uniwersalne.
--
pozdrawiam,
Marcin Zaleczny
Re: [Windows.Forms] tabindex + używanie entera jak klawisza tab
Author: Marek Janaszewski USUNTO. z adre...
Date: Sat, 27 Mar 2004 21:25
Date: Sat, 27 Mar 2004 21:25
61 lines
2675 bytes
2675 bytes
Marcin Załęczny wrote:
> Dnia Thu, 25 Mar 2004 12:19:31 +0100, Piecu
> <piecu.NIE_...@go2.pl> napisał:
>
>> Użytkownik Tomasz Kubacki napisał:
>>> ...a pod if robie:
>>> SendKeys.Send(" ");
>>> czyli wysyłam tab'a :-)
>>
>> A nie prościej:
>> passTextBox.Focus();
>> ???
>>
>
> Prosciej, ale dziala tylko w tym konkretnym przypadku ;) Pierwsze
> rozwiazanie jest uniwersalne.
Witam!
A ja na początek zaproponuje coś takiego:
private void WinForm_KeyPress(object sender,
System.Windows.Forms.KeyPressEventArgs e)
{
if (e.KeyChar == '\r')
{
SelectNextControl(ActiveControl, true, true, true, true);
e.Handled = true;
}
}
Trzeba ustawić KeyPreview dla formularza aby zdarzenie było wywoływane.
Testowałem to różnych kontrolkach i ComboBox jakby przechwytywało te
klawisze. Dodatkowo przydało by się obsłużyć Shift+Enter dla cofania focusu.
W dokumentacji jest Focus i Select, ciekawa jaka to jest różnica dla
kontrolek.
Więc ewentualnie:
private void WinForm_KeyPress(object sender,
System.Windows.Forms.KeyPressEventArgs e)
{
if (e.KeyChar == '\r')
{
Control c = GetNextControl(ActiveControl, true);
if ((c != null) && (c.CanFocus))
c.Focus();
e.Handled = true;
}
}
Wydaje się najlepszym rozwiązaniem wsadzić ten kod w AcceptButton. Wtedy
będzie wywoływane tylko kiedy Enter jest dostępny i nie wykorzystywane przez
innego kontrolki. W KeyPress widze problem z ComboBox bo nie jest
wywoływany, mimo że lista jest schowana.
--
Pozdrawiam,
Marek Janaszewski
[ j_m...@gazeta.pl ]
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads