7 Stimmen

ComboBox verliert nicht den Fokus

Ich habe Probleme mit dem ComboBox-Steuerelement gehabt. Ich bin kein Experte in GUI, aber ich weiß, dass dieses Problem mit dem Fokus des Steuerelements verbunden ist.

Aus irgendeinem Grund verliert die ComboBox ihren Fokus nicht, wenn ich außerhalb von ihr klicke. Sagen wir zum Beispiel:

  1. Ich klicke auf die ComboBox, um ihre Elemente aufzulisten.
  2. Ich wähle einen Artikel aus. Dadurch wird die ComboBox geschlossen.
  3. Ich klicke auf die zweite ComboBox, die erste bleibt fokussiert.

O

  1. Klicken Sie auf eine ComboBox (enthält Point, Solid und Wireframe).
  2. Klicken Sie auf das Formular. Drücken Sie entweder P, S oder W. Sehen Sie, wie die Auswahl geändert wird.

Beachten Sie, dass die ComboBox nur über die DropDownStyle eingestellt auf ComboBoxStyle.DropDownList . Das bedeutet, dass dies das Standardverhalten der ComboBox ist. Ich dachte, das Standardverhalten sei, dass die ComboBox ihren Fokus verliert, wenn Sie aus ihr heraus oder auf ein anderes Steuerelement (Schaltfläche oder ComboBox) klicken. Das ist hier nicht der Fall, warum?

UPDATE : Was ich brauche, ist eine Art von ActiveComponent = null. Das Verhalten sollte ähnlich wie das von Visual Studio sein, wo Sie Debug oder Release (ComboBox) in der Standard-Symbolleiste auswählen. Derzeit, wenn ich außerhalb der ComboBox klicken, ist es noch fokussiert.

19voto

Brandon Punkte 1151

Vielleicht möchten Sie einen Blick werfen auf Dieses Thema . Versuchen Sie, CausesValidation für das Kombinationsfeld auf false zu setzen, um zu sehen, ob Sie es belassen können. Wenn eine Ausnahme im OnValidating-Ereignishandler ausgelöst wird, wird das Feld nicht abgewählt.

3voto

novacara Punkte 2079

Sind Sie sicher, dass das Problem nicht daran liegt, dass weder Ihr Rahmen noch Ihre andere Combobox eine Möglichkeit haben, den Fokus zu erhalten?

3voto

Rajesh Punkte 47

Alles, was Sie tun müssen, ist:

  1. zum Eigenschaftsfenster der Combobox wechseln
  2. und setzen Drop="true" zulassen

Die Eigenschaft ist für einen anderen Zweck bestimmt, aber sie funktioniert auch für dieses Szenario.

2voto

Dave Markle Punkte 91733

Was genau wollen Sie also damit sagen? Wollen Sie damit sagen, dass Ihr _LostFocus()-Ereignishandler nicht aufgerufen wird? Wenn ja, würde ich zuerst in Ihrem vom Designer generierten Event-Handler-Zuordnungscode nachsehen. Manchmal hat das eine Möglichkeit, durch bestimmte Dinge im Designer zu tun getrennt werden (es ist selten in diesen Tagen, aber ...)

2voto

Rob Punkte 5122

Ich hatte ein ähnliches Problem, aber das Steuerelement verlor rekursiv den Fokus und nahm ihn wieder auf; die LostFocus Ereignisbehandlungsroutine wurde aufgerufen, aber das Steuerelement erhielt sofort wieder den Fokus. Das Setzen des CausesValidation Eigenschaft zu false hatte keine Auswirkungen.

In meinem Fall hatte ich mich an die SelectedValue statt der Eigenschaft Text Eigenschaft bei der Bindung an ein benutzerdefiniertes Objekt. Da ich die ComboBox-Elementsammlung manuell angegeben und keine Datenquelle bereitgestellt habe, wird die ValueMember Eigenschaft fehlte oder ungültig war (daher ist natürlich die SelectedValue Eigentum war nicht von Nutzen).

Ich ändere meine Bindung und verwende die Text Eigenschaft löste das Problem.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X