Comment : récupérer des données du Presse-papiers
La classe Clipboard fournit des méthodes que vous pouvez utiliser pour interagir avec les fonctionnalités du Presse-papiers du système d'exploitation Windows. De nombreuses applications utilisent le Presse-papiers en tant que référentiel temporaire pour les données. Par exemple, les applications de traitement de texte utilisent le Presse-papiers pour les opérations de copier-coller. Le Presse-papiers est également utile pour transférer des informations d'une application à un autre.
Certaines applications stockent des données dans le Presse-papiers dans plusieurs formats pour augmenter le nombre d'applications capables d'utiliser les données. Un format de Presse-papiers est une chaîne qui identifie le format. Une application qui utilise le format identifié peut récupérer les données associées sur le Presse-papiers. La classe DataFormats fournit des noms de formats prédéfinis que vous pouvez utiliser. Vous pouvez également utiliser vos propres noms de formats ou le type d'un objet comme son format. Pour plus d'informations sur l'ajout de données dans le Presse-papiers, consultez Comment : ajouter des données au Presse-papiers.
Pour déterminer si le Presse-papiers contient des données dans un format particulier, utilisez une des méthodes ContainsFormat ou la méthode GetData. Pour récupérer des données du Presse-papiers, utilisez une des méthodes GetFormat ou la méthode GetData. Ces méthodes sont nouvelles dans .NET Framework version 2.0.
Pour accéder aux données du Presse-papiers en utilisant les versions précédentes du .NET Framework 2.0, utilisez la méthode GetDataObject et appelez les méthodes de l'IDataObject retourné. Pour déterminer si un format particulier est disponible dans l'objet retourné, par exemple, appelez la méthode GetDataPresent.
Notes
Toutes les applications Windows partagent le Presse-papiers du système. Par conséquent, le contenu est susceptible de changer lorsque vous basculez vers une autre application.
La classe Clipboard peut être utilisée uniquement dans les threads configurés en mode STA (Single Thread Apartment). Pour utiliser cette classe, veillez à ce que votre méthode Main soit marquée avec l'attribut STAThreadAttribute.
Pour récupérer des données du Presse-papiers dans un format commun unique
Utilisez la méthode GetAudioStream, GetFileDropList, GetImage ou GetText. Si vous le souhaitez, vous pouvez utiliser les méthodes ContainsFormat correspondantes afin de déterminer si les données sont disponibles dans un format particulier. Ces méthodes sont disponibles uniquement dans .NET Framework version 2.0.
' Demonstrates SetAudio, ContainsAudio, and GetAudioStream. Public Function SwapClipboardAudio( _ ByVal replacementAudioStream As System.IO.Stream) _ As System.IO.Stream Dim returnAudioStream As System.IO.Stream = Nothing If (Clipboard.ContainsAudio()) Then returnAudioStream = Clipboard.GetAudioStream() Clipboard.SetAudio(replacementAudioStream) End If Return returnAudioStream End Function ' Demonstrates SetFileDropList, ContainsFileDroList, and GetFileDropList Public Function SwapClipboardFileDropList(ByVal replacementList _ As System.Collections.Specialized.StringCollection) _ As System.Collections.Specialized.StringCollection Dim returnList As System.Collections.Specialized.StringCollection _ = Nothing If Clipboard.ContainsFileDropList() Then returnList = Clipboard.GetFileDropList() Clipboard.SetFileDropList(replacementList) End If Return returnList End Function ' Demonstrates SetImage, ContainsImage, and GetImage. Public Function SwapClipboardImage( _ ByVal replacementImage As System.Drawing.Image) _ As System.Drawing.Image Dim returnImage As System.Drawing.Image = Nothing If Clipboard.ContainsImage() Then returnImage = Clipboard.GetImage() Clipboard.SetImage(replacementImage) End If Return returnImage End Function ' Demonstrates SetText, ContainsText, and GetText. Public Function SwapClipboardHtmlText( _ ByVal replacementHtmlText As String) As String Dim returnHtmlText As String = Nothing If (Clipboard.ContainsText(TextDataFormat.Html)) Then returnHtmlText = Clipboard.GetText(TextDataFormat.Html) Clipboard.SetText(replacementHtmlText, TextDataFormat.Html) End If Return returnHtmlText End Function
// Demonstrates SetAudio, ContainsAudio, and GetAudioStream. public System.IO.Stream SwapClipboardAudio( System.IO.Stream replacementAudioStream) { System.IO.Stream returnAudioStream = null; if (Clipboard.ContainsAudio()) { returnAudioStream = Clipboard.GetAudioStream(); Clipboard.SetAudio(replacementAudioStream); } return returnAudioStream; } // Demonstrates SetFileDropList, ContainsFileDroList, and GetFileDropList public System.Collections.Specialized.StringCollection SwapClipboardFileDropList( System.Collections.Specialized.StringCollection replacementList) { System.Collections.Specialized.StringCollection returnList = null; if (Clipboard.ContainsFileDropList()) { returnList = Clipboard.GetFileDropList(); Clipboard.SetFileDropList(replacementList); } return returnList; } // Demonstrates SetImage, ContainsImage, and GetImage. public System.Drawing.Image SwapClipboardImage( System.Drawing.Image replacementImage) { System.Drawing.Image returnImage = null; if (Clipboard.ContainsImage()) { returnImage = Clipboard.GetImage(); Clipboard.SetImage(replacementImage); } return returnImage; } // Demonstrates SetText, ContainsText, and GetText. public String SwapClipboardHtmlText(String replacementHtmlText) { String returnHtmlText = null; if (Clipboard.ContainsText(TextDataFormat.Html)) { returnHtmlText = Clipboard.GetText(TextDataFormat.Html); Clipboard.SetText(replacementHtmlText, TextDataFormat.Html); } return returnHtmlText; }
Pour récupérer des données du Presse-papiers dans un format personnalisé
Utilisez la méthode GetData avec un nom de format personnalisé. Cette méthode est uniquement disponible dans .NET Framework version 2.0.
Vous pouvez également utiliser des noms de formats prédéfinis avec la méthode SetData. Pour plus d'informations, consultez DataFormats.
' Demonstrates SetData, ContainsData, and GetData ' using a custom format name and a business object. Public ReadOnly Property TestCustomFormat() As Customer Get Clipboard.SetData("CustomerFormat", New Customer("Customer Name")) If Clipboard.ContainsData("CustomerFormat") Then Return CType(Clipboard.GetData("CustomerFormat"), Customer) End If Return Nothing End Get End Property ... <Serializable()> Public Class Customer Private nameValue As String = String.Empty Public Sub New(ByVal name As String) nameValue = name End Sub Public Property Name() As String Get Return nameValue End Get Set(ByVal value As String) nameValue = value End Set End Property End Class
// Demonstrates SetData, ContainsData, and GetData // using a custom format name and a business object. public Customer TestCustomFormat { get { Clipboard.SetData("CustomerFormat", new Customer("Customer Name")); if (Clipboard.ContainsData("CustomerFormat")) { return Clipboard.GetData("CustomerFormat") as Customer; } return null; } } ... [Serializable] public class Customer { private string nameValue = string.Empty; public Customer(String name) { nameValue = name; } public string Name { get { return nameValue; } set { nameValue = value; } } }
Pour récupérer des données du Presse-papiers dans des formats multiples
Utilisez la méthode GetDataObject. Vous devez utiliser cette méthode pour récupérer des données du Presse-papiers sur les versions précédentes du .NET Framework 2.0.
' Demonstrates how to use a DataObject to add ' data to the Clipboard in multiple formats. Public Sub TestClipboardMultipleFormats() Dim data As New DataObject() ' Add a Customer object using the type as the format. data.SetData(New Customer("Customer as Customer object")) ' Add a ListViewItem object using a custom format name. data.SetData("CustomFormat", _ New ListViewItem("Customer as ListViewItem")) Clipboard.SetDataObject(data) Dim retrievedData As DataObject = _ CType(Clipboard.GetDataObject(), DataObject) If (retrievedData.GetDataPresent("CustomFormat")) Then Dim item As ListViewItem = _ TryCast(retrievedData.GetData("CustomFormat"), ListViewItem) If item IsNot Nothing Then MessageBox.Show(item.Text) End If End If If retrievedData.GetDataPresent(GetType(Customer)) Then Dim customer As Customer = _ CType(retrievedData.GetData(GetType(Customer)), Customer) If customer IsNot Nothing Then MessageBox.Show(customer.Name) End If End If End Sub ... <Serializable()> Public Class Customer Private nameValue As String = String.Empty Public Sub New(ByVal name As String) nameValue = name End Sub Public Property Name() As String Get Return nameValue End Get Set(ByVal value As String) nameValue = value End Set End Property End Class
// Demonstrates how to use a DataObject to add // data to the Clipboard in multiple formats. public void TestClipboardMultipleFormats() { DataObject data = new DataObject(); // Add a Customer object using the type as the format. data.SetData(new Customer("Customer as Customer object")); // Add a ListViewItem object using a custom format name. data.SetData("CustomFormat", new ListViewItem("Customer as ListViewItem")); Clipboard.SetDataObject(data); DataObject retrievedData = (DataObject)Clipboard.GetDataObject(); if (retrievedData.GetDataPresent("CustomFormat")) { ListViewItem item = retrievedData.GetData("CustomFormat") as ListViewItem; if (item != null) { MessageBox.Show(item.Text); } } if (retrievedData.GetDataPresent(typeof(Customer))) { Customer customer = retrievedData.GetData(typeof(Customer)) as Customer; if (customer != null) { MessageBox.Show(customer.Name); } } } ... [Serializable] public class Customer { private string nameValue = string.Empty; public Customer(String name) { nameValue = name; } public string Name { get { return nameValue; } set { nameValue = value; } } }
Voir aussi
Tâches
Comment : ajouter des données au Presse-papiers
Autres ressources
Opérations glisser-déplacer et prise en charge du Presse-papiers