Combo Box feuert nicht, wenn man die gleiche Option noch einmal auswählt

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Peter329.

    Combo Box feuert nicht, wenn man die gleiche Option noch einmal auswählt

    Hi,

    ich habe eine Frage zum Umgang mit einer Combo Box und einer DatagridView.

    Mit meiner Combo Box kann ich den "Case" einer Spalte der DatagridView einstellen, z.B. Upper Case.

    Natürlich kann ich im "Edit Mode" der DatagridView den Inhalt durch Kleinbuchstaben überschreiben.

    Jetzt würde ich gern eine Möglichkeit haben, die Auswahl "Upper Case" zu reaktivieren. (s. Anhang)

    Aber egal was ich anklicke, den Button mit dem kleinen Dreieck oder die Auswahl "Upper" ... das Ereignis "TextChanged" wird nicht erneut ausgelöst.

    Natürlich kann ich das erzwingen: Erst wähle ich etwa "Lower" aus ... und dann wieder "Upper" ... dann wird das Ereignis "Text" Changed (zweimal) ausgelöst. Aber das verursacht aufgrund der Programmlogik ziemlichen Overhead ...

    Meine Frage: gibt es mit dem ComboBox Control eine einfach Möglichkeit für eine bereits getroffene Auswahl der ComboBox das Ereignis "TextChanged" noch einmal auszulösen. Etwa durch ein nochmaliges Anklicken der bereits getroffenen Auswahl. Die Ereignisse cbo.Validated ... cbo.TextUpdate ... hab ich ausprobiert, aber die helfen leider nicht weiter ...

    Ich hoffe, ich habe mein Anliegen verständlich machen können.

    Any bright ideas ?

    LG
    Peter
    Bilder
    • 04 cbo Reselect.jpg

      60,79 kB, 928×258, 53 mal angesehen
    Ich würde das CellFormatting-Event des DataGridViews nutzen.

    Invalidiere einfach das DataGridView, wenn der Combobox Index sich ändert.

    VB.NET-Quellcode

    1. Private Sub DataGridView1_CellFormatting(sender As Object, e As DataGridViewCellFormattingEventArgs) Handles DataGridView1.CellFormatting
    2. If e.RowIndex > -1 Then
    3. If e.ColumnIndex = 1 Then
    4. If Not e.Value Is Nothing Then
    5. ' hier dann abhängig machen von combobox-selection
    6. e.Value = e.Value.ToString().ToUpper()
    7. End If
    8. End If
    9. End If
    10. End Sub

    Cloud Computer? Nein Danke! Das ist nur ein weiterer Schritt zur totalen Überwachung.
    „Wer die Freiheit aufgibt, um Sicherheit zu gewinnen, wird am Ende beides verlieren.“
    Benjamin Franklin

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „NoIde“ ()

    Danke erst mal für deine Antwort.

    Die Sache ist, dass sich der der ComboBox Index, ja gerade NICHT ändert ! Wenn er sich ändern würde, dann greift das TextChanged Event und da formatiere ich die Spalte neu !

    Ich benötige ein Event das feuert, wenn ich den gleichen Combo Box Index NOCH EINMAL auswähle.

    Ich fürchte, so ein Event gibt es nicht ... und dann müsste ich mir mit einem Button "Reapply" behelfen, mit dem ich die Formattierung dann "von Hand" anstoße ...

    Das ist eine Umgehung ... aber es ist eben auch nur eine Umgehung ... :)

    LG
    Peter
    @Peter329 Poste mal einen Projektrumpf, das Deinen Effekt reproduziert.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Mit dem ComboBox.DropDownClosed Ereignis, müßte sich doch was anfangen lassen.

    [off topic]Der Threadtitel ist echt mies, er beschreibt weder das Problem, noch ist er suchfreundlich.
    Warum zur Hölle, schreibst du ComboBox nicht aus ?[/off topic]
    @Peter329 Klicke demnächst auch mal auf deine Controls im Designer, mach das Property-Fenster auf, dort ist so was wie ein Blitz zu sehen, da kannst Events abbonieren per Klick, es sind also alle gelistet. Die Namen der Events sagen meist schon alles.
    Cloud Computer? Nein Danke! Das ist nur ein weiterer Schritt zur totalen Überwachung.
    „Wer die Freiheit aufgibt, um Sicherheit zu gewinnen, wird am Ende beides verlieren.“
    Benjamin Franklin

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „NoIde“ ()

    ouch ... mein Sample funktioniert genauso wie es funktionieren sollte ... wenn man die gleiche Option noch einmal auswählt, dann feuert das Event "SelectedIndexChanged".

    Mein Fehler war, dass ich in meinem Program das Event "TextChanged" abfrage ... das funktioniert, wenn sich die Option ändert in der gleichen Weise,wie "SelectedIndexChanged". Wenn man aber die gleiche Option noch einmal auswählt, dann feuert "TextChanged" NICHT mehr !

    Mit anderen Worten, ich muss "SelectedIndexChanged" auswerten ... und schon funktioniert die Sache.

    Danke !

    LG
    Peter

    @FormFollowsFunction: ok, ich hab den Titel geändert.