Frage : Using dragdrop wie zur "RESET"-Farbe eines Aufklebers, wenn Maus verlässt und des Tropfens ist nicht aufgetreten?


Zu ein einfaches Beispiel verursachen:
1. Ein neues WinForms Projekt anfangen, das TEST DragDrop genannt.
2. Auf Form1 den Werkzeugkasten benutzen:
   - Label1 und Satz Eigenschaften AllowDrop hinzufügen.
   - Label2 und Satz Eigenschaften AllowDrop hinzufügen.
   - richTextBox1 und Satz Eigenschaften EnableAutoDragDrop hinzufügen.
3. Den Code in Form1 ändern, um wie dieses auszusehen:
        Öffentlichkeit Form1 ()
        {
            InitializeComponent ();
        }

        privates leeres AnyLabel_DragEnter (Gegenstandabsender, DragEventArgs e)
        {
            //Get-Absender
            Aufkleber lbl = (Aufkleber) Absender;
            lbl.BackColor = Color.Green;

            wenn (e.Data.GetDataPresent (DataFormats.Text))
               e.Effect = DragDropEffects.Copy;
            sonst
               e.Effect = DragDropEffects.None;
        }

        privates leeres AnyLabel_DragDrop (Gegenstandabsender, DragEventArgs e)
        {
            //Get-Absender- und EinsatzTextfolge
            Aufkleber lbl = (Aufkleber) Absender;
            lbl. Text = (Schnur) e.Data.GetData (DataFormats.Text, falsch);
        }
    }
4. In den Eigenschaften für jedes Aufkleberklicken Ereignisse und:
   - Für DragEnter, auserwähltes AnyLabel_DragEnter
   - Für DragDrop, auserwähltes AnyLabel_DragDrop

5. Kompilieren und laufen. Etwas Text in die area per informazioni schreiben, den Text vorwählen und den Text zu label1 schleppen und fortfahren, zu label2 zu schleppen. Den Text auf label2 fallenlassen.

ANMERKUNGEN: Das Problem ist, dass, wenn der Tropfen nicht freigegeben und die Maus label1 verlässt, das BackColor zum Normal zurückstellen sollte. Dann könnte die Maus zwischen jeden Aufkleber hin und her reisen („des Grüns“ dann „nicht“ zeigend Grün) bis der Tropfen freigegeben.

Antwort : Using dragdrop wie zur "RESET"-Farbe eines Aufklebers, wenn Maus verlässt und des Tropfens ist nicht aufgetreten?


DragLeave für den Aufkleber behandeln und in dieser Zufuhr die rückseitige Farbe zurück zu der Rückstellung wie einstellen:

privates leeres AnyLabel_DragLeave (Gegenstandabsender, EventArgs e)
        {
            Aufkleber lbl = (Aufkleber) Absender;
            lbl.BackColor = defaultLabelBackColor;
        }
Weitere Lösungen  
 
programming4us programming4us