Nasıl yapılır: Panoya Veri Ekleme
Clipboardsınıfı, Windows işletim sistemi pano özelliğiyle etkileşim kurmak için kullanabileceğiniz yöntemler sağlar. Birçok uygulama, pano 'Yu veri için geçici bir depo olarak kullanır. Örneğin, Word işlemcileri kes ve yapıştır işlemleri sırasında panoyu kullanır. Pano, verileri bir uygulamadan diğerine aktarmak için de kullanışlıdır.
Panoya veri eklediğinizde, diğer uygulamaların bu biçimi kullanabilmesi durumunda verileri tanıyabilmesi için veri biçimini belirtebilirsiniz. Ayrıca, verileri potansiyel olarak kullanbilecek diğer uygulamaların sayısını artırmak için birden çok farklı biçimde panoya veri ekleyebilirsiniz.
Pano biçimi, bu biçimi kullanan bir uygulamanın ilişkili verileri alabilmesi için biçimi tanımlayan bir dizedir. DataFormatsSınıfı, kullanım için önceden tanımlanmış biçim adları sağlar. Kendi biçim adlarınızı de kullanabilir veya bir nesnenin türünü biçimi olarak kullanabilirsiniz.
Panoya bir veya birden çok biçimde veri eklemek için SetDataObject yöntemini kullanın. Bu yönteme herhangi bir nesne geçirebilirsiniz, ancak birden fazla formatta veri eklemek için, önce verileri birden çok biçim ile çalışacak şekilde tasarlanan ayrı bir nesneye eklemeniz gerekir. Genellikle verilerinizi bir öğesine eklersiniz DataObject , ancak arabirimi uygulayan herhangi bir türü kullanabilirsiniz IDataObject .
.NET Framework 2,0 ' de, temel pano görevlerini daha kolay hale getirmek için tasarlanan yeni yöntemleri kullanarak doğrudan panoya veri ekleyebilirsiniz. Verilerle birlikte çalışırken, metin gibi tek bir ortak biçimdeki bu yöntemleri kullanın.
Not
tüm Windows tabanlı uygulamalar panoyu paylaşır. Bu nedenle, başka bir uygulamaya geçtiğinizde içerik değişebilir.
ClipboardSınıfı yalnızca tek iş parçacığı apartmanı (STA) moduna ayarlanmış iş parçacıklarında kullanılabilir. Bu sınıfı kullanmak için Main yönteminizin özniteliğiyle işaretlendiğinden emin olun STAThreadAttribute .
Bir nesne, pano 'Ya yerleştirilecek şekilde seri hale getirilebilir olmalıdır. Bir türü seri hale getirilebilir yapmak için SerializableAttribute özniteliğiyle işaretleyin. Bir pano yöntemine serileştirilebilir olmayan bir nesne geçirirseniz, yöntem özel durum oluşturmadan başarısız olur. Serileştirme hakkında daha fazla bilgi için bkz System.Runtime.Serialization ..
Tek, ortak bir biçimde panoya veri eklemek için
,, SetAudioSetFileDropListSetImage Veya SetText metodunu kullanın. bu yöntemler yalnızca .NET Framework 2,0 ' de kullanılabilir.
// 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
Panoya özel bir biçimde veri eklemek için
SetDataYöntemi özel biçim adıyla kullanın. bu yöntem yalnızca .NET Framework 2,0 ' de kullanılabilir.
Önceden tanımlanmış biçim adlarını yöntemiyle de kullanabilirsiniz SetData . Daha fazla bilgi için bkz. 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
Birden çok biçimdeki panoya veri eklemek için
Yöntemini kullanın Clipboard.SetDataObject ve verilerinizi içeren bir içinde geçiş DataObject yapın. .NET Framework 2,0 ' den önceki sürümlerde pano 'ya veri eklemek için bu yöntemi kullanmanız gerekir.
// 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