none
DoubleClick in CheckedListBox unterbinden RRS feed

  • Frage

  • Hallo,

    ich würde gerne Doubleclicks in CheckedListBoxen verbieten und nur einzelne Clicks erlauben. Wie bewerkstelligt man dies?

    Liebe Grüße,

    Alice

    Freitag, 8. April 2016 08:54

Antworten

Alle Antworten

  • Hallo Alice,

    die Aktivierung/Deaktivierung des Elements mit einem Klick kann man per CheckOnClick festlegen. Siehe dazu.

      https://msdn.microsoft.com/de-de/library/system.windows.forms.checkedlistbox.checkonclick.aspx

    Was soll denn beim Doppelklick passieren und warum willst Du das Standardverhalten ändern?

    Generell kannst Du dich in das DoubleClick Ereignis reinhängen und dann verschiedene Aktionen durchführen. Siehe dazu:

      https://msdn.microsoft.com/de-de/library/system.windows.forms.control.doubleclick.aspx

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community


    Freitag, 8. April 2016 09:04
    Moderator
  • Hallo Stefan,

    bei einem Doppelklick soll gar nichts passieren, da die CLB beim einfachen Klicken Items in Bookmarks(Word) einfügt. Wenn ich ein bestimmtes Item anwähle, werden alle anderen zuvor gewählten abgewählt und können, solange das bestimmte Item angewählt ist, nicht mehr ausgewählt werden. Macht man dann allerdings einen Doppelklick auf die gesperrten Items, können sie wieder angewählt werden, obwohl sie nicht eingefügt werden und es auch nicht sollen.

    Freitag, 8. April 2016 09:11
  • Hallo Alice,

    zeig doch mal den Code, mit dem Du bisher die Bookmarks setzt. (Bitte inkl. EventHandler für die CheckedListBox)


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Freitag, 8. April 2016 09:17
    Moderator
  • Die Bookmarks sind mit Textmarken vorher festgelegt worden.

    Aus einer Klasse:

     Public Sub ChangeBookmark(ByVal strName As String, ByVal strValue As String)
            Dim bookmark As Word.Bookmark
            Dim rangeWork As Word.Range
    
            bookmark = GetBookmark(strName)
            rangeWork = bookmark.Range.Duplicate
    
            If IsProtectedRange(rangeWork) Then
                ProtectionOff()
            End If
            Try
                rangeWork.Text = strValue.ToString
    
                doc.Bookmarks.Add(strName, rangeWork)
            Catch
            End Try
    
        End Sub

    Das Einfügen in die CLB:

     Private Sub clbProzesse_SelectedIndexChanged(sender As Object, e As EventArgs) Handles clbProzesse.SelectedIndexChanged
            'alle gewählten Items (Prozesse) ins Dokument schreiben; höchstens 3 oder BBG-Gesamt, wenn BBG-Gesamt: wählt alle anderen Punkte ab 
    
            Dim i As Integer
    
            If clbProzesse.CheckedItems.Count = 0 Then
                docTools.ChangeBookmark("Prozess1", "")
            End If
    
            If clbProzesse.CheckedItems.Count > 3 Or clbProzesse.CheckedItems.Contains("BBG-Gesamt") Then
                If clbProzesse.CheckedItems.Count > 3 Then
                    If clbProzesse.CheckedItems.Contains("BBG-Gesamt") Then
    
                        For i = 0 To clbProzesse.Items.Count - 1
                            clbProzesse.SetItemChecked(i, False)
                        Next
    
                        docTools.ProtectionOff()
                        docTools.ChangeBookmark("Prozess1", "BBG-Gesamt")
                        docTools.ChangeBookmark("Prozess2", "")
                        docTools.ChangeBookmark("Prozess3", "")
                        clbProzesse.SetItemChecked(0, True)
    
                    Else
                        MessageBox.Show("Bitte höchstens 3 Prozesse oder BBG-Gesamt auswählen.")
                        clbProzesse.SetItemChecked(clbProzesse.SelectedIndex, False)
                    End If
    
                ElseIf clbProzesse.CheckedItems.Contains("BBG-Gesamt") Then
    
                    For i = 0 To clbProzesse.Items.Count - 1
                        clbProzesse.SetItemChecked(i, False)
                    Next
    
                    docTools.ProtectionOff()
                    docTools.ChangeBookmark("Prozess1", "BBG-Gesamt")
                    docTools.ChangeBookmark("Prozess2", "")
                    docTools.ChangeBookmark("Prozess3", "")
                    clbProzesse.SetItemChecked(0, True)
    
                End If
    
            Else
    
                Dim x As Integer
                Dim str As String = ""
    
                Dim ListeProzesse As New List(Of String)
    
                For x = 0 To clbProzesse.CheckedItems.Count - 1
                    str = clbProzesse.CheckedItems(x).ToString
    
                    ListeProzesse.Add(clbProzesse.CheckedItems(x))
                    docTools.ProtectionOff()
    
                    docTools.ChangeBookmark("Prozess1", "")
                    docTools.ChangeBookmark("Prozess2", "")
                    docTools.ChangeBookmark("Prozess3", "")
    
                    If ListeProzesse.Count - 1 = 0 Then
                        docTools.ChangeBookmark(("Prozess" & x + 1), ListeProzesse.Item(x))
                    ElseIf ListeProzesse.Count - 1 = 1 Then
                        docTools.ChangeBookmark(("Prozess" & x), ListeProzesse.Item(x - 1))
                        docTools.ChangeBookmark(("Prozess" & x + 1), ListeProzesse.Item(x))
                    ElseIf ListeProzesse.Count - 1 = 2 Then
                        docTools.ChangeBookmark(("Prozess" & x - 1), ListeProzesse.Item(x - 2))
                        docTools.ChangeBookmark(("Prozess" & x), ListeProzesse.Item(x - 1))
                        docTools.ChangeBookmark(("Prozess" & x + 1), ListeProzesse.Item(x))
                    End If
    
                Next
            End If
    
        End Sub

    Freitag, 8. April 2016 09:25
  • Hat sich erledigt.
    • Als Antwort markiert Dark Alice Dienstag, 16. August 2016 14:26
    Dienstag, 16. August 2016 14:26