在C#中,我们可以使用静态类System.Windows.Clipboard 来使用系统剪切板复制和剪切内容。
Clipboard.SetText函数,向剪切板中插入内容,将制定的内容添加到剪切板;
Clipboard.GetText函数,获取剪切板中当前的内容。
Clipboard 还提供下面函数操作系统剪切板:
-ContainsData 查询剪贴板上是否存在指定数据格式的数据。
-ContainsAudio 查询剪贴板上是否存在 WaveAudio 数据格式的数据。
-ContainsImage 查询剪贴板上是否存在 Bitmap 数据格式的数据。
-ContainsFileDropList 查询剪贴板上是否存在 FileDrop 数据格式的数据。
-ContainsText 查询剪贴板上是否存在有效文本数据格式的数据。
-IsCurrent 比较指定的数据对象与剪贴板的内容。
-GetDataObject 返回表示剪贴板全部内容的数据对象。
-GetText 返回一个包含剪贴板上文本数据的字符串。
-GetImage 从剪贴板返回一个 BitmapSource 对象,其中包含 Bitmap 格式的数据。
-GetAudioStream 返回 WaveAudio 数据格式的剪贴板数据流。
-GetFileDropList 返回一个字符串集合,其中包含剪贴板上提供的拖放文件的列表。
-SetDataObject 已重载。 在系统剪贴板上存储指定的数据对象。
-SetFileDropList 将 FileDrop 数据存储在剪贴板上。拖放文件列表指定为字符串集合。
-SetImage 将 Bitmap 数据存储在剪贴板上。图像数据指定为 BitmapSource。
-SetText 将文本数据存储在剪贴板上。将要存储的文本数据指定为一个字符串。
-Clear 从系统剪贴板中清除任何数据。
-SetAudio 将音频数据(WaveAudio 数据格式)存储在剪贴板上。音频数据既可以是字节数组,也可以是流。
例如你要对若干个文件进行拷贝操作,那么这些文件的文件名会被加入到剪贴板的一个列表中你可以通过上面提到的Clipboard.GetFileDropList 方法获得这个列表的内容。
public partial class MainWindow : Window, INotifyPropertyChanged
{
public MainWindow()
{
InitializeComponent();
this.DataContext = this;
}
public StringCollection FileList { get; set; }
private void btnPasteFileList_Click(object sender, RoutedEventArgs e)
{
if (Clipboard.ContainsFileDropList())
{
FileList = Clipboard.GetFileDropList();
RaisePropertyChanged("FileList");
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void RaisePropertyChanged(string prop)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(prop));
}
}
XMAL界面显示拷贝的文件名:
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<ListBox ItemsSource="{Binding FileList}"/>
<Button Grid.Column="1" Content="Paste File List"
VerticalAlignment="Top" HorizontalAlignment="Left"
Padding="10,5" Margin="10"
Click="btnPasteFileList_Click"/>
</Grid>