Guida per: Aggiungere dati agli Appunti
La classe Clipboard fornisce metodi che è possibile usare per interagire con la funzionalità Appunti del sistema operativo Windows. Molte applicazioni usano gli Appunti come archivio temporaneo per le informazioni. Ad esempio, i word processor utilizzano gli Appunti durante le operazioni taglia e incolla. La Clipboard è utile anche per trasferire i dati da un'applicazione a un'altra.
Quando si aggiungono dati agli Appunti, è possibile indicare il formato dei dati in modo che altre applicazioni possano riconoscere i dati se possono usare tale formato. È anche possibile aggiungere dati agli Appunti in più formati diversi per aumentare il numero di altre applicazioni che possono potenzialmente usare i dati.
Un formato degli appunti è una stringa che identifica il formato, in modo che un'applicazione che utilizza questo formato possa recuperare i dati associati. La classe DataFormats fornisce nomi di formato predefiniti per l'uso. È anche possibile usare nomi di formato personalizzati o usare il tipo di un oggetto come formato.
Per aggiungere dati agli Appunti in uno o più formati, utilizzare il metodo SetDataObject. È possibile passare qualsiasi oggetto a questo metodo, ma per aggiungere dati in più formati, è prima necessario aggiungere i dati a un oggetto separato progettato per funzionare con più formati. Di solito, aggiungerai i tuoi dati a un DataObject, ma puoi usare qualsiasi tipo che implementa l'interfaccia IDataObject.
Per aggiungere dati agli Appunti usando un formato unico e comune, utilizzare il metodo specifico per quel formato, come SetText per il testo.
Nota
Tutte le applicazioni basate su Windows condividono gli Appunti. Pertanto, il contenuto è soggetto a modifiche quando si passa a un'altra applicazione.
La classe Clipboard può essere usata solo in thread impostati sulla modalità apartment a thread singolo (STA). Per usare questa classe, assicurarsi che il metodo Main
sia contrassegnato con l'attributo STAThreadAttribute.
Un oggetto deve essere serializzabile perché venga inserito negli Appunti. Per rendere serializzabile un tipo, contrassegnarlo con l'attributo SerializableAttribute. Se si passa un oggetto non serializzabile a un metodo della clipboard, il metodo fallirà senza sollevare un'eccezione. Per altre informazioni sulla serializzazione, vedere System.Runtime.Serialization.
Per aggiungere dati agli Appunti in un unico formato comune
Usare il metodo SetAudio, SetFileDropList, SetImageo SetText.
// 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; }
' 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
Per aggiungere dati agli Appunti in un formato personalizzato
Usare il metodo SetData con un nome di formato personalizzato.
È anche possibile usare nomi di formato predefiniti con il metodo SetData. Per altre informazioni, vedere DataFormats.
// 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; } }
' 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 string nameValue = string.Empty; public Customer(String name) { nameValue = name; } public string Name { get { return nameValue; } set { nameValue = value; } } }
<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
Per aggiungere dati agli Appunti in più formati
Usare il metodo Clipboard.SetDataObject e passare un DataObject che contenga i propri dati.
// 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); } } }
' 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 string nameValue = string.Empty; public Customer(String name) { nameValue = name; } public string Name { get { return nameValue; } set { nameValue = value; } } }
<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
Vedere anche
.NET Desktop feedback