🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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
#612
Author: Tomasz Kubacki
Date: Tue, 23 Mar 2004 07:27
31 lines
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
#613
Author: Jacek Czapla
Date: Tue, 23 Mar 2004 10:48
39 lines
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
#614
Author: Jacek Wo³oszka
Date: Tue, 23 Mar 2004 11:17
54 lines
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
#615
Author: Tomasz Kubacki
Date: Tue, 23 Mar 2004 17:27
12 lines
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
#616
Author: Piecu
Date: Thu, 25 Mar 2004 11:19
15 lines
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
#617
Author: Tomasz Kubacki
Date: Thu, 25 Mar 2004 13:00
10 lines
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
#618
Author: Marcin Załęczny
Date: Fri, 26 Mar 2004 07:02
19 lines
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
#619
Author: Marek Janaszewski USUNTO. z adre...
Date: Sat, 27 Mar 2004 21:25
61 lines
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