Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    26

    Trascinamento oggetti a runtime

    Buonasera,
    sto cercando un esempio semplice per gestire a runtime degli oggetti su una form in C#, per esempio con il mouse spostare di posizione un button o una label sulla form.

    Ho provato a guardare esempi su Drag e Drop, ma riguardano soprattutto lo spostamento del contenuto ...

    Qualcuno ha un esempio semplice?

    Grazie e saluti.
    Paolo.

  2. #2
    non ricordo dove trovai questa classe ma fa al caso tuo:

    codice:
    using System;
    using System.Collections.Generic;
    using System.Drawing;
    using System.Windows.Forms;
    
    namespace UIUtils
    {
       public class DragHelper
        {
            public enum Direction
            {
                Any,
                Horizontal,
                Vertical
            }
    
            public static int GetX { get; set; }
            public static int GetY { get; set; }
    
            public static void Init(Control control)
            {
                Init(control, Direction.Any);
            }
    
            public static void Init(Control control, Direction direction)
            {
                Init(control, control, direction);
            }
    
            public static void Init(Control control, Control container, Direction direction)
            {
                bool Dragging = false;
                Point DragStart = Point.Empty;
                Point Location = Point.Empty;
                 
                control.MouseDown += delegate(object sender, MouseEventArgs e)
                {
                    Dragging = true;
                    DragStart = new Point(e.X, e.Y);
                    control.Capture = true;
                    
                };
    
                control.MouseUp += delegate(object sender, MouseEventArgs e)
                {
                    Dragging = false;
                    control.Capture = false;
                    Location = control.PointToScreen(Point.Empty);
                    GetX = Location.X;
                    GetY = Location.Y;
                };
    
                control.MouseMove += delegate(object sender, MouseEventArgs e)
                {
                    if (Dragging)
                    {
                        if (direction != Direction.Vertical)
                            container.Left = Math.Max(0, e.X + container.Left - DragStart.X);
                        if (direction != Direction.Horizontal)
                            container.Top = Math.Max(0, e.Y + container.Top - DragStart.Y);
                    }
                    
                    
                };
    
                
            }
    
            
        }
    }
    per utilizzarla:

    codice:
    //somewhere in the blue code..
    
    Button btn = new Button();
    btn.Text = "drag me";
    //blabla
    DragHelper.Init(btn);

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.