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.

1voto

Ich hatte ein ähnliches Problem und habe alle Methoden ausprobiert, die ihr vorgeschlagen habt. Leider funktioniert keine von ihnen. Hier ist meine "einfache" Lösung: Senden Sie einen "ESC"-Tastendruck, nachdem Sie den SelectedIndex ändern.

ComboBox1_SelectedIndexChanged(object sender, System.EventArgs e)
{
# do whatever you were doing
...
...
  SendKeys.Send("{ESC}");
}

Bei mir hat es funktioniert.

1voto

ADI Punkte 21

Versuchen Sie das Ereignis Leave anstelle von LostFocus.
Versuchen Sie das Ereignis Enter anstelle von GotFocus.

1voto

Alexander Punkte 3534
  1. Nach SendKeys.Send("{ESC}") ; ComboBox noch immer den Fokus zurückgewinnt;

  2. Einstellung CausesValidation auf false für das Kombinationsfeld zu setzen, hat mir auch nicht geholfen.

Ich habe dieses Problem folgendermaßen gelöst:

Angenommen, Sie haben ein anderes Steuerelement, zum Beispiel System.Windows.Forms.PictureBox pbxChart und der Benutzer möchte den Fokus genau dorthin verschieben, nachdem er die Werte in combobox (selecting by Left Click or MouseWheel) . Also habe ich hinzugefügt:

    private void pbxChart_Click(object sender, EventArgs e)
    {
        pbxChart.Focus();
    }

in MouseClick EventHandler , wodurch das Problem behoben wurde.

0voto

Anthony Punkte 19

Unter ***form.Designer.vb Sie haben einige Code für jede Combobox wie:

'OrgDetailsIDComboBox
'
Me.OrgDetailsIDComboBox.DataBindings.Add(New System.Windows.Forms.Binding("Text", Me.MedicoLegalBindingSource, "OrgDetailsID", True))
Me.OrgDetailsIDComboBox.DataBindings.Add(New System.Windows.Forms.Binding("SelectedValue", Me.MedicoLegalBindingSource, "OrgDetailsID", True))
Me.OrgDetailsIDComboBox.DataSource = Me.OrgBindingSource
Me.OrgDetailsIDComboBox.DisplayMember = "Place"

Ich habe das Problem behoben, indem ich die erste Zeile des Codes auskommentiert habe (enthält string Forms.Binding("Text", ) . Es scheint also nur die Aussage für SelectedValue erforderlich ist.

0voto

user8588 Punkte 1

Das Wörterbuch, das die Werte der Combobox aufnimmt, hat einen Typ-Index, einen Typ-Wert, und der Typ-Index muss den gleichen Typ haben, der in der Klasse Properity auf der Combobox gebunden ist. Wenn die Typen diferent war die Combobox nie den Fokus verlieren wird.

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