Frage

Ich habe eine WinForm mit 3 Gruppenfeldern, eines mit Combo-Box und zwei mit Radio-Buttons. Ich habe alle von ihnen und ihren Kindern Kontrollen „TabStop = false“, aber wenn ich Zyklus mit TAB, die aktuell ausgewählte Optionsfeld in jedem der letzten beiden Gruppenfelder wird konzentriert.

Wenn es keine Möglichkeit, dieses Verhalten zu ändern, was wäre eine gute Veranstaltung zu fangen und den Fokus weg bewegen? Ich kann keine „OnFocus“ Veranstaltung.


Die Lösung ist ein Verfahren (Code unten), um die „Enter“ Ereignis jedes Optionsfeld in Form zu handhaben (wenn das, was Sie wollen).

Eigentlich habe ich es nur für die Radio-Buttons der ersten Gruppe Box und es hat funktioniert, die zweite Radio-Buttons der Gruppe Feld Fokus nicht erhalten, obwohl ihre „Enter“ Ereignisse werden nicht behandelt. Dies ist nicht das Verhalten, das Sie erwartet hätten.

private void radiobuttonXGroup1_Enter(object sender, EventArgs e)
{
   SomeOtherControl.Focus();
}

In der * .Designer.cs Datei bearbeiten Sie jedes Ereignis eingeben (für jedes Optionsfeld) zu Punkt zu einem Event-Handler (das oben beschriebene Verfahren).

this.radiobutton1Group1.Enter += new System.EventHandler(this.radiobuttonXGroup1_Enter);
this.radiobutton2Group1.Enter += new System.EventHandler(this.radiobuttonXGroup1_Enter);
this.radiobutton3Group1.Enter += new System.EventHandler(this.radiobuttonXGroup1_Enter);
War es hilfreich?

Lösung

Die Dokumentation MSDN für RadioButton.TabStop heißt es: „Diese API .NET Framework unterstützt Infrastruktur und ist nicht direkt aus dem Code“verwendet werden soll. Was im Grunde bedeutet, „Das wird nicht zu arbeiten, wie Sie es erwarten.“

Mit dieser sagte, die Enter-Ereignis wird ausgelöst, wenn die Schaltfläche den Fokus erhält. Sie können versuchen, das verwenden Fokus auf ein anderes Steuerelement zu wechseln.

Andere Tipps

Zur Einstellung der TabStop auf False auf einem RadioButton- zu den Kontrollarbeiten zu verhindern Tabulatortaste, bis Sie actully das Optionsfeld ohne zusätzliche Überschreibungen auswählen wie durch @msergeant vorgeschlagen.

Bearbeiten

Der folgende Code verhindert, dass der Code aus einem Tabulatortaste Ereignisse bekommen:

private void radioButton1_CheckedChanged(object sender, EventArgs e)
{
   radioButton1.TabStop = false;
}

Radio Tasten verhalten sich anders in Bezug auf Tab von anderen Steuerungen, daß sie in Sätzen oder Gruppen, arbeiten auf der Basis des Registerindex Einstellen oder dann Optionsfelder in einem Gruppenfeld platzieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top