Benutzer mit den meisten Antworten
DoubleClick in CheckedListBox unterbinden

Frage
Antworten
-
Hat sich erledigt.
- Als Antwort markiert Dark Alice Dienstag, 16. August 2016 14:26
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
- Bearbeitet Stefan FalzModerator Freitag, 8. April 2016 09:07
-
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.
-
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 -
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
-
Hat sich erledigt.
- Als Antwort markiert Dark Alice Dienstag, 16. August 2016 14:26