myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
   » Plugin für Firefox
   » Plugin für IE7
   » Gadget für Vista
» Regeln
» Wie poste ich richtig?
» Datenschutzerklärung
» wbb-FAQ

Mitglieder
» Liste / Suche
» Stadt / Anleitung dazu
» Wer ist wo online?

Angebote
» ASP.NET Webspace
» Bücher
» Zeitschriften
   » dot.net magazin
» Accessoires

Ressourcen
» .NET-Glossar
» guide to C#
» openbook: Visual C#
» openbook: OO
» .NET BlogBook
» MSDN Webcasts
» dotnetjob.de
» Search.Net

Team
» Kontakt
» Übersicht
» Wir über uns
» Bankverbindung
» Impressum

» Unsere MiniCity
MiniCity
» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » GUI: Windows-Forms » Fokusweitergabe nach Eingabetaste
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Fokusweitergabe nach Eingabetaste

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
soso
myCSharp.de-Mitglied

Dabei seit: 29.01.2010
Beiträge: 3


soso ist offline

Fokusweitergabe nach Eingabetaste

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo!

Ich habe mehrere NumericUpDown-Felder auf einer Windows-Form. Nun möchte ich, dass nach dem Drücken der Eingabetaste das nächste Feld fokussiert wird. Dies gelingt mir bereits auf drei verschiedene Versionen. Allerdings kommt bei jeder der drei Versionen ein Ton.
Gibt es auch eine Variante, die Fokusweitergabe lautlos zu erreichen?
Wenn dann ein paar mehr Felder auf der Form sind, wird dieser Ton sehr schnell furchtbar nervig.

C#-Code:
public partial class Testform : Form
{
    public Testform()
    {
        InitializeComponent();
    }

    private void NumericUpDownFieldKeyUp(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Enter)
        {
            NumericUpDown nud_sender = (NumericUpDown)sender;

            // Variant 1
            this.SelectNextControl(this.ActiveControl, true, true, false, false);

            // Variant 2
            ProcessTabKey(true);

            // Variant 3
            switch (nud_sender.Name)
            {
                case "nud_field1":
                    nud_field2.Focus();
                    break;
                case "nud_field2":
                    nud_field3.Focus();
                    break;
                case "nud_field3":
                    nud_field4.Focus();
                    break;
                case "nud_field4":
                    MessageBox.Show("Sum: " + (nud_field1.Value + nud_field2.Value + nud_field3.Value + nud_field4.Value));
                    break;
            }
        }
    }
}

Kann mir bitte jemand helfen?

Danke im Voraus!

Gruß
31.01.2010 23:32 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
herbivore
myCSharp.de-Team (Admin)

images/avatars/avatar-2627.gif


Dabei seit: 11.01.2005
Beiträge: 47.496
Entwicklungsumgebung: csc/nmake (nothing is faster)
Herkunft: Berlin


herbivore ist online

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo soso,

ich würde es mal mit  [FAQ] Textbox: Signalton nach drücken der Eingabetaste unterdrücken probieren.

Für die Focusweitergabe solltest du ActiveControl verwenden und nicht Focus, denn:

Zitat von MSDN:
Focus ist eine Methode auf niedriger Ebene, die hauptsächlich für Autoren benutzerdefinierter Steuerelemente bestimmt ist. Anwendungsprogrammierer sollten hingegen die Select-Methode oder die ActiveControl-Eigenschaft für untergeordnete Steuerelemente bzw. die Activate-Methode für Formulare verwenden.

herbivore
01.02.2010 07:19 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
soso
myCSharp.de-Mitglied

Dabei seit: 29.01.2010
Beiträge: 3

Themenstarter Thema begonnen von soso

soso ist offline

Das Problem ist wohl ein anderes: Die automatische Eingabevalidierung des NumericUpDown-Feldes

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo!

Danke für die Hinweise und Tipps. Ich hatte wirklich zuerst m Internet gegooglt und im Forum gesucht bevor ich den Thread erstellt habe, die entsprechenden Passagen allerdings nicht gefunden.
Allerdings hilft mir die Antwort nicht wirklich weiter. Jetzt habe ich noch eine weitere Ewigkeit herumprobiert und geforscht, bin aber leider zu keiner Lösung gekommen.
Dennoch bin ich einen Schritt weiter: Mir ist jetzt bekannt, das mein Problem ein anderes ist: Das Auftreten dieses nervigen Signaltons erfolgt nicht im Zusammenhang mit der Fokusweitergabe. Vielmehr wird der Ton durch die automatische Eingabevalidierung des NumericUpDown-Feldes ausgelöst. Die Eingabetaste gilt hier wohl als ungültig. Der Ton kommt immer, nachdem eine andere Taste als eine Zahlentaste gedrückt wurde.
Daher ist mein Problem wohl ein anderes: Wie kann ich die Eingabetaste als gültige Eingabe des NumericUpDown-Feldes anerkennen? (Also mit in die für die Validierung gültigen Tasten aufnehmen?)

Kennt da vielleicht jemand eine Lösung oder hat eine Idee und kann mir bitte helfen?

Besten Dank im Voraus!

Gruß
01.02.2010 16:30 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Darth Maim Darth Maim ist männlich
myCSharp.de-Mitglied

Dabei seit: 23.10.2009
Beiträge: 199
Entwicklungsumgebung: Visual Studio 2010


Darth Maim ist offline

KeyDown-Event

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Und wenn du das KeyDown-Event nimmst und e.Handled auf true setzt?

Darth Maim
01.02.2010 18:37 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Zwischen diesen beiden Beiträgen liegen mehr als 9 Monate.
holliesoft holliesoft ist männlich
myCSharp.de-Mitglied

Dabei seit: 04.04.2010
Beiträge: 10
Entwicklungsumgebung: Visual Studio 2010 Professiona
Herkunft: Gau-Algesheim (Rheinhessen)


holliesoft ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hi,

ich hänge mich an diesen älteren Thread mal dran, da ich vor dem selben Problem stehe. Ich prüfe im KeyPress meiner NumericUpDown-Controls auf die Enter-Taste und führe bei Enter eine Berechnungsmethode aus.

Zitat von Darth Maim:
Und wenn du das KeyDown-Event nimmst und e.Handled auf true setzt?

Das (bzw. die Variante im KeyPress-Ereignis, die laut o.g. FAQ-Eintrag die korrekte Stelle wäre) habe ich ohne Erfolg probiert. Beim Durchsteppen wird "e.Handled = true" aufgerufen.

Hat jemand eine Idee?

Danke und viele Grüße,
Patrick
08.11.2010 07:39 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
deerhunter deerhunter ist männlich
myCSharp.de-Mitglied

Dabei seit: 31.10.2005
Beiträge: 91
Entwicklungsumgebung: VS 2010 Professional


deerhunter ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Liebe Freunde der NumericUpDowns!

Ich habe  im Microsoft-Forum die Lösung zu dem Problem gefunden:

C#-Code:
    private void NumericUpDown1KeyDown(object sender, KeyEventArgs e)
    {
      if (e.KeyCode == Keys.Return)
      {
        this.ActiveControl = numericUpDown2;
        e.SuppressKeyPress = true;
      }
    }

VG, Florian
08.11.2010 12:59 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Zwischen diesen beiden Beiträgen liegt mehr als ein Jahr.
soso
myCSharp.de-Mitglied

Dabei seit: 29.01.2010
Beiträge: 3

Themenstarter Thema begonnen von soso

soso ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo!

Ich habe inzwischen auch eine Lösung für das Problem gefunden:

C#-Code:
    private void NumericUpDownFieldKeyUp(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Enter)
        {
            e.Handled = true;
            ProcessTabKey(true);
        }
    }

Setzt natürlich voraus, dass man die Tab-Reihenfolge gesetzt hat.

Gruß
01.04.2012 14:52 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 3 Jahre.
Der letzte Beitrag ist älter als ein Jahr.
Antwort erstellen


© Copyright 2003-2013 myCSharp.de-Team. Alle Rechte vorbehalten. 25.05.2013 07:52