Vraag : Het gebruiken dragdrop, hoe te kleur van een etiket wanneer de muis weggaat en daling „is terugstellen“ niet voorgekomen?


Om een eenvoudig voorbeeld te creëren:
1. Begin met een nieuw project WinForms genoemd TEST DragDrop.
2. Voor Form1, gebruik toolbox:
   - Om label1 en vastgestelde Eigenschappen aan AllowDrop toe te voegen.
   - Om label2 en vastgestelde Eigenschappen aan AllowDrop toe te voegen.
   - Om richTextBox1 en vastgestelde Eigenschappen aan EnableAutoDragDrop toe te voegen.
3. De code in Form1 te wijzigen om als dit te kijken:
        openbare Form1 ()
        {
            InitializeComponent ();
        }

        privé nietige AnyLabel_DragEnter (objecten afzender, DragEventArgs e)
        {
            //Get afzender
            Etiket lbl = (Etiket) afzender;
            lbl.BackColor = Color.Green;

            als (e.Data.GetDataPresent (DataFormats.Text))
               e.Effect = DragDropEffects.Copy;
            anders
               e.Effect = DragDropEffects.None;
        }

        privé nietige AnyLabel_DragDrop (objecten afzender, DragEventArgs e)
        {
            //Get afzender en het koord van de tussenvoegseltekst
            Etiket lbl = (Etiket) afzender;
            lbl. Tekst = (koord) e.Data.GetData (valse DataFormats.Text,);
        }
    }
4. In Eigenschappen, voor elk etiket klik Gebeurtenissen en:
   - Voor DragEnter, uitgezochte AnyLabel_DragEnter
   - Voor DragDrop, uitgezochte AnyLabel_DragDrop

5. Compileer en loop. Typ één of andere tekst in textbox, selecteer de tekst, en sleep de tekst aan label1 en blijf slepend aan label2. Laat vallen de tekst op label2.

BECOMMENTARI�ëRT: Het probleem is dat wanneer de daling niet wordt vrijgegeven en de muis label1 verlaat, BackColor aan normaal zou moeten terugstellen. Dan kon de muis afwisselend tussen elk etiket die („groene“ toen „niet groen“ tonen) reizen tot de daling wordt vrijgegeven.

Antwoord : Het gebruiken dragdrop, hoe te kleur van een etiket wanneer de muis weggaat en daling „is terugstellen“ niet voorgekomen?


Het handvat DragLeave voor het etiket en in die manager plaatste de achterkleur terug naar het gebrek als:

privé nietige AnyLabel_DragLeave (objecten afzender, EventArgs e)
        {
            Etiket lbl = (Etiket) afzender;
            lbl.BackColor = defaultLabelBackColor;
        }
Andere oplossingen  
 
programming4us programming4us