Lire en anglais

Partager via


Control.AllowDrop Propriété

Définition

Obtient ou définit une valeur indiquant si le contrôle peut accepter des données que l'utilisateur y fait glisser.

public virtual bool AllowDrop { get; set; }

Valeur de propriété

true si les opérations de glisser-déplacer sont autorisées dans le contrôle ; sinon, false. La valeur par défaut est false.

Exemples

L’exemple de code suivant permet à l’utilisateur de faire glisser une image ou un fichier image vers le formulaire et de l’afficher au moment où il est supprimé. La OnPaint méthode est remplacée pour repeindre l’image chaque fois que le formulaire est peint ; sinon, l’image persistera uniquement jusqu’au prochain repeint. La DragEnter méthode de gestion des événements détermine le type de données déplacées dans le formulaire et fournit les commentaires appropriés. La DragDrop méthode de gestion des événements affiche l’image sur le formulaire, si un Image peut être créé à partir des données. Étant donné que les DragEventArgs.X valeurs et DragEventArgs.Y sont des coordonnées d’écran, l’exemple utilise la PointToClient méthode pour les convertir en coordonnées client.

private Image picture;
private Point pictureLocation;

public Form1()
{
   // Enable drag-and-drop operations and 
   // add handlers for DragEnter and DragDrop.
   this.AllowDrop = true;
   this.DragDrop += new DragEventHandler(this.Form1_DragDrop);
   this.DragEnter += new DragEventHandler(this.Form1_DragEnter);
}

protected override void OnPaint(PaintEventArgs e)
{
   // If there is an image and it has a location, 
   // paint it when the Form is repainted.
   base.OnPaint(e);
   if(this.picture != null && this.pictureLocation != Point.Empty)
   {
      e.Graphics.DrawImage(this.picture, this.pictureLocation);
   }
}

private void Form1_DragDrop(object sender, DragEventArgs e)
{
   // Handle FileDrop data.
   if(e.Data.GetDataPresent(DataFormats.FileDrop) )
   {
      // Assign the file names to a string array, in 
      // case the user has selected multiple files.
      string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
      try
      {
         // Assign the first image to the picture variable.
         this.picture = Image.FromFile(files[0]);
         // Set the picture location equal to the drop point.
         this.pictureLocation = this.PointToClient(new Point(e.X, e.Y) );
      }
      catch(Exception ex)
      {
         MessageBox.Show(ex.Message);
         return;
      }
   }

   // Handle Bitmap data.
   if(e.Data.GetDataPresent(DataFormats.Bitmap) )
   {
      try
      {
         // Create an Image and assign it to the picture variable.
         this.picture = (Image)e.Data.GetData(DataFormats.Bitmap);
         // Set the picture location equal to the drop point.
         this.pictureLocation = this.PointToClient(new Point(e.X, e.Y) );
      }
      catch(Exception ex)
      {
         MessageBox.Show(ex.Message);
         return;
      }
   }
   // Force the form to be redrawn with the image.
   this.Invalidate();
}

private void Form1_DragEnter(object sender, DragEventArgs e)
{
   // If the data is a file or a bitmap, display the copy cursor.
   if (e.Data.GetDataPresent(DataFormats.Bitmap) || 
      e.Data.GetDataPresent(DataFormats.FileDrop) ) 
   {
      e.Effect = DragDropEffects.Copy;
   }
   else
   {
      e.Effect = DragDropEffects.None;
   }
}

Notes pour les héritiers

Lorsque vous substituez la AllowDrop propriété dans une classe dérivée, utilisez la propriété de la classe de AllowDrop base pour étendre l’implémentation de base. Sinon, vous devez fournir toute l’implémentation. Vous n’êtes pas obligé de remplacer les get accesseurs et set de la AllowDrop propriété ; vous ne pouvez remplacer qu’un seul si nécessaire.

S’applique à

Produit Versions
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9

Voir aussi