您的位置:首页 > 其它

利用.NET Framework类库中的Clipboard类,实现数据的复制(剪切)和粘贴

2007-08-13 11:06 483 查看
"复制"操作的代码
Private Sub copyToolStripMenuItem11_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem11.Click
If txtEditor.SelectionLength > 0 Then
Clipboard.SetDataObject(txtEditor.SelectedText)
End If
End Sub
"剪切"操作部分代码
Private Sub cutToolStripMenuItem12_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem12.Click
Clipboard.SetDataObject(txtEditor.SelectedText)
txtEditor.SelectedText = ""
End Sub
"粘贴"操作部分代码
Private Sub pasteToolStripMenuItem13_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem13.Click
Dim iData As IDataObject = Clipboard.GetDataObject()
If iData.GetDataPresent(DataFormats.Text) Then
txtEditor.SelectedText = CType(iData.GetData(DataFormats.Text), String)
End If
End Sub
注意:txtEditor是文本框TextBox类型
Clipboard.SetDataObject 方法:将数据放置到系统剪贴板上。
重载列表[Visual Basic]
Overloads Public Shared Sub SetDataObject(Object)将非持久性数据放置到系统剪贴板上.
Overloads Public Shared Sub SetDataObject(Object, Boolean)将数据放置在系统剪贴板上,并指定在应用程序退出后是否将数据保留在剪贴板上。调用 SetDataObject 将数据放置在剪贴板上。若要将数据的一份持久性副本放置在剪贴板上,可将 copy 参数设置为 true
注意 将数据以多种格式放置在剪贴板上可最大限度地确保目标应用程序(您可能不知道它的格式要求)成功地检索数据。调用 GetDataObject 来从剪贴板检索数据。数据作为实现 IDataObject 接口的对象返回。使用IDataObject 指定的方法和 DataFormats 中的字段从该对象中提取数据。如果不知道检索到的数据的格式,可调用 IDataObject 接口的 GetFormats 方法以获取存储数据所用的所有格式的列表。然后调用 IDataObject 接口的 GetData 方法,并指定您的应用程序可使用的格式。
注意 所有 Windows 应用程序共享系统剪贴板,所以当切换到另一个应用程序时,剪贴板的内容可能会发生变化。
注意 类对于它必须是可序列化的才能放在剪贴板上。
示例
下面的方法在应用程序中运行。它将文本框中所选文本数据的持久性副本放置在系统剪贴板上。此代码假定 button1、textBox1 和 textBox2 已经创建并已经放置在窗体上。
button1_Click
方法调用 SetDataObject 来从文本框中提取选定的文本,然后将其放置到系统剪贴板上。
button2_Click
方法调用 GetDataObject 从系统剪贴板中检索数据。代码使用 IDataObjectDataFormats 提取返回的数据。数据显示在
textBox2
中。
Private Sub button1_Click(sender As Object, e As System.EventArgs)
' Takes the selected text from a text box and puts it on the clipboard.
If textBox1.SelectedText <> "" Then
Clipboard.SetDataObject(textBox1.SelectedText, True)
Else
textBox2.Text = "No text selected in textBox1"
End If
End Sub 'button1_Click在另一应用程序中,下面的方法从系统剪贴板检索文本,并将该文本粘贴到
textBox2
中。此代码假定
button2
textBox2
已经创建并已经放置在窗体上。
Private Sub button2_Click(sender As Object, e As System.EventArgs)
' Declares an IDataObject to hold the data returned from the clipboard.
' Retrieves the data from the clipboard.
Dim iData As IDataObject = Clipboard.GetDataObject()' Determines whether the data is in a format you can use.
If iData.GetDataPresent(DataFormats.Text) Then
' Yes it is, so display it in a text box.
textBox2.Text = CType(iData.GetData(DataFormats.Text), String)
Else
' No it is not.
textBox2.Text = "Could not retrieve data off the clipboard."
End If
End Sub 'button2_ClickClipboard.GetDataObject 方法:检索当前在系统剪贴板上的数据。
[Visual Basic] Public Shared Function GetDataObject() AsIDataObject
返回值:IDataObject(表示当前在剪贴板上的数据)或者空引用(Visual Basic 中为Nothing)(如果剪贴板上没有数据)。
备注:因为从剪贴板返回的对象的数据类型可以不同,所以此方法返回 IDataObject 中的数据。然后,可以使用IDataObject 接口的方法以正确的数据类型提取数据。
IDataObject 接口:为传送数据提供与格式无关的机制。
[Visual Basic]
<ComVisible(True)>
Public Interface IDataObject
interface IDataObject
实现 IDataObject 的类是DataObject类.DataObject类能够实现基数据传输机制.
备注:IDataObject 接口由Clipboard 类在拖放操作中使用。
当在类中实现之后,IDataObject 方法允许用户在该类的实例中以多种格式存储数据。以多种格式存储数据提高了目标应用程序(您可能不知道它的格式要求)检索存储数据的机会。要在IDataObject 的实例中存储数据,请调用SetData 方法,并在format 参数中指定数据格式。如果您不希望存储数据在检索时被转换成另一种格式,请将autoConvert 参数设置为false。在IDataObject 的一个实例中多次调用SetData,从而以多种格式存储数据。
通过调用 GetData 方法并在format 参数中指定数据格式,可从IDataObject 中检索存储的数据。将autoConvert 参数设置为false,从而只检索以指定格式存储的数据。要将存储的数据转换成指定的格式,请将autoConvert 设置成true,否则不要使用autoConvert。
若要确定存储在 IDataObject 中的数据的格式,请使用下面的IDataObject 方法。
1>通过调用 GetFormats 方法可以检索所有用于提供数据的格式构成的数组。将autoConvert 参数设置为false,从而只获取存储数据的格式。要获取数据可用的所有格式,请将autoConvert 设置为true,或不使用该参数。
2>调用 GetDataPresent 方法来确定某种格式的已存储数据是否可用。如果不希望存储数据被转换成指定格式,请将autoConvert 参数设置为false
有关此接口的实现,请参见 DataObject 类。有关预定义Clipboard 数据格式的信息,请参见DataFormats 类。
IDataObject 成员
GetData已重载。检索与指定的数据格式关联的数据。
GetDataPresent已重载。确定此实例中存储的数据是否与指定的格式关联。
GetFormats已重载。返回存储在此实例中的数据所关联的或可以转换为的所有格式的列表。
SetData
[align=bottom][/align]
DataFormats 类
提供静态的(在 Visual Basic 中是 Shared)、预定义的Clipboard 格式名称。使用它们来标识存储在IDataObject 中的数据的格式。
有关此类型所有成员的列表,请参阅 DataFormats 成员
System.Object
System.Windows.Forms.DataFormats
[Visual Basic]
Public Class DataFormats
线程安全:此类型的所有公共静态(Visual Basic 中为 Shared)成员是线程安全的。但不保证任何实例成员是线程安全的。
备注:IDataObjectDataObject 类也使用静态的(在 Visual Basic 中是Shared)格式列表来确定从系统Clipboard 中检索到的数据类型,或在拖放操作中转换的数据类型。
GetFormat 方法使您可以:
1>为某个格式名或 ID 号获取预定义的 DataFormats.Format 对象。
2>向该类的静态(在 Visual Basic 中是 Shared)列表中添加新的格式名/ID 号对,并在向该格式传递格式名时使用 Windows 注册表将该格式注册为Clipboard 格式。可以从DataFormats.Format 实例的相应字段中获取id 号或格式name
示例
下面的示例创建一个名为
myFormat
的新数据格式。然后,这段代码创建一个
MyNewObject
,并将它存储在DataObject 中。将DataObject 复制到Clipboard
然后,将从 Clipboard 检索DataObject 并将恢复
MyNewObject
MyNewObject
的值显示在文本框中。这段代码假定已创建
textBox1
并已将其放置在窗体上。
[Visual Basic]
Option Explicit
Option StrictImports System
Imports System.Windows.FormsPublic Class MyClass1
Inherits Form
Private textBox1 As TextBoxPublic Sub MyClipboardMethod()
' Creates a new data format.
Dim myFormat As DataFormats.Format = _
DataFormats.GetFormat("myFormat")' Creates a new object and store it in a DataObject using myFormat
' as the type of format.
Dim myObject As New MyNewObject()
Dim myDataObject As New DataObject(myFormat.Name, myObject)' Copies myObject into the clipboard.
Clipboard.SetDataObject(myDataObject)' Performs some processing steps.
' Retrieves the data from the clipboard.
Dim myRetrievedObject As IDataObject = Clipboard.GetDataObject()' Converts the IDataObject type to MyNewObject type.
Dim myDereferencedObject As MyNewObject = _
CType(myRetrievedObject.GetData(myFormat.Name), MyNewObject)' Print the value of the Object in a textBox.
textBox1.Text = myDereferencedObject.MyObjectValue
End Sub 'MyClipboardMethod
End Class 'MyClass' Creates a new type.
<Serializable()> Public Class MyNewObject
Inherits Object
Private myValue As String' Creates a default constructor for the class.
Public Sub New()
myValue = "This is the value of the class"
End Sub 'New' Creates a property to retrieve or set the value.Public Property MyObjectValue() As String
Get
Return myValue
End Get
Set
myValue = value
End Set
End Property
End Class 'MyNewObject

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: