Text in Combobox ziehen

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Text in Combobox ziehen

    Hallo, wie muss eine Combobox aufgebaut sein damit man mit der Maus per Drag & Drop Text reinziehen kann.

    Hab schon versucht mit AllowDrop = True und noch einiges andere. Bring es aber nicht zusammen einen Text ins Feld hineinzuziehen.

    Danke!
    @vbgut Du musst außerdem das DragEnter- und das DragDrop-Event der ComboBox implementieren.
    Ich hab da ein Beispiel von @~blaze~ , schau Dir das mal an (ist getestet):

    VB.NET-Quellcode

    1. Private Sub ComboBox1_DragDrop(sender As Object, e As DragEventArgs) Handles ComboBox1.DragDrop
    2. For Each fl As String In DirectCast(e.Data.GetData(DataFormats.FileDrop), IEnumerable(Of String))
    3. ComboBox1.Items.Add(fl)
    4. Next
    5. End Sub
    6. Private Sub ComboBox1_DragEnter(sender As Object, e As DragEventArgs) Handles ComboBox1.DragEnter
    7. If Not e.AllowedEffect.HasFlag(DragDropEffects.Link) Then Return
    8. If e.KeyState <> Keys.LButton Then Return 'e.KeyState auf alle erlaubten Kombinationen ueberpruefen
    9. If Not e.Data.GetDataPresent(DataFormats.FileDrop) Then Return
    10. Dim data = DirectCast(e.Data, DataObject)
    11. Console.WriteLine(data.GetFileDropList.GetType.ToString)
    12. Console.WriteLine(data.GetData(DataFormats.FileDrop).GetType.ToString)
    13. Dim files = e.Data.GetData(DataFormats.FileDrop)
    14. If TypeOf files Is IEnumerable(Of String) Then e.Effect = DragDropEffects.Link
    15. End Sub
    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!
    Hi RodFromGermany,

    Hab den Code 1:1 übernommen, aber wenn man einen Text, zB aus dem Browser in die ComboBox reinziehen möchte geht das nicht.

    Die Box hat als Eigenschaft nun

    AllowDrop = True
    DragDrop = ComboBox1_DragDrop
    DragEnter = ComboBox1_DragEnter

    Dennoch kein Erfolg :(

    Hab hier einen Screenshot der ComboBox Eigenschaften hochgeladen

    666kb.com/i/d9p5gwe93v3izo9qx.jpg
    http://666kb.com/i/d9p5jvq206dwzz0wp.jpg


    Update:

    Das Problem ist gelöst. Mit diesem Code hats nun endlich funktioniert:

    VB.NET-Quellcode

    1. Private Sub ComboBox1_DragEnter(
    2. ByVal sender As Object,
    3. ByVal e As System.Windows.Forms.DragEventArgs
    4. ) Handles ComboBox1.DragEnter
    5. e.Effect = DragDropEffects.Copy
    6. If e.Data.GetDataPresent(DataFormats.Text) Then
    7. e.Effect = DragDropEffects.Copy
    8. Else
    9. e.Effect = DragDropEffects.None
    10. End If
    11. End Sub
    12. Private Sub ComboBox1_DragDrop(
    13. ByVal sender As Object,
    14. ByVal e As System.Windows.Forms.DragEventArgs
    15. ) Handles ComboBox1.DragDrop
    16. ComboBox1.Text =
    17. e.Data.GetData(DataFormats.Text).ToString
    18. End Sub

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „vbgut“ ()

    Hi
    du hättest natürlich auch DataFormats.FileDrop austauschen müssen. Es ist immer hilfreich, die Codes zu verstehen, die man kopiert. Ich hätte allerdings auch Kommentare hinzufügen können...

    Übrigens: Inzwischen würde ich auch eine Validierung der Typen in DragDrop durchführen.

    Viele Grüße
    ~blaze~