博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【万里征程——Windows App开发】如何使用粘贴板
阅读量:7070 次
发布时间:2019-06-28

本文共 3932 字,大约阅读时间需要 13 分钟。

记得智能手机刚出来那会比较火的一个概念“能够复制粘贴的手机就是智能手机”。现在看来,这不过是个老掉牙的功能了,但实际用处却是非常强大的,那么现在我们就来试试怎么做到这个功能。

粘贴板的英文名叫做Clipboard,这也是它的类名了。

新建工程这种就不说了,在XAML中代码如下:

在后台代码中写上这么一个方法:

void Clipboard_ContentChanged(object sender, object e)        {            DataPackageView pv = Clipboard.GetContent();            if (pv.Contains(StandardDataFormats.Text))            {                btnClip.IsEnabled = true;            }                       }

StandardDataFormats是标准数据格式,这里判断它是否是Text,如果是的话则让前面的Button按钮可用(之前设为不可用,以灰色显示)。

标准数据格式有Bitmap,HTML,RTF,StorageItems,Text,Uri等。

然后在按钮的Click事件中写如下代码:

private async void btnClip_Click(object sender, RoutedEventArgs e)        {                            var txt = await Clipboard.GetContent().GetTextAsync();                tBlockClipboard.Text = txt;                   }

这里我们使用了Clipboard类的GetContent()方法,用于在剪切板中取出DataPackageView对象数据;类似的还有SetContent(),用于把数据存入剪切板中。还有Clear事件来清空剪切板,Flush事件把数据从源写入到剪切板,并且在应用程序退出后依然保留在剪切板中。还有ContentChanged事件在剪切板中存储的数据内容发生变化时自动激活以达到监听剪切板内容变化的效果。

protected override void OnNavigatedTo(NavigationEventArgs e)        {            Clipboard.ContentChanged += Clipboard_ContentChanged;        }        protected override void OnNavigatedFrom(NavigationEventArgs e)        {            Clipboard.ContentChanged -= Clipboard_ContentChanged;        }        void Clipboard_ContentChanged(object sender, object e)        {            DataPackageView pv = Clipboard.GetContent();            if (pv.Contains(StandardDataFormats.Text)||pv.Contains(StandardDataFormats.Bitmap))            {                btnClip.IsEnabled = true;            }                       }

大家可以试试,已经完成了,但我们可以做的更多,不是吗?

完整的代码如下:

public sealed partial class MainPage : Page    {        public MainPage()        {            this.InitializeComponent();        }        protected override void OnNavigatedTo(NavigationEventArgs e)        {            Clipboard.ContentChanged += Clipboard_ContentChanged;        }        protected override void OnNavigatedFrom(NavigationEventArgs e)        {            Clipboard.ContentChanged -= Clipboard_ContentChanged;        }        void Clipboard_ContentChanged(object sender, object e)        {            DataPackageView pv = Clipboard.GetContent();            if (pv.Contains(StandardDataFormats.Text)||pv.Contains(StandardDataFormats.Bitmap))            {                btnClip.IsEnabled = true;            }                       }                     private async void btnClip_Click(object sender, RoutedEventArgs e)        {            scrollView.Visibility = Visibility.Collapsed;            imgClicpboard.Visibility = Visibility.Collapsed;            tBlockClipboard.Text = " ";            imgClicpboard.Source = null;            DataPackageView pv = Clipboard.GetContent();            if (pv.Contains(StandardDataFormats.Text))            {                scrollView.Visibility = Visibility;                var txt = await Clipboard.GetContent().GetTextAsync();                tBlockClipboard.Text = txt;            }            else if(pv.Contains(StandardDataFormats.Bitmap))            {                imgClicpboard.Visibility = Visibility;                var bmp = await Clipboard.GetContent().GetBitmapAsync();                Windows.UI.Xaml.Media.Imaging.BitmapImage bitMap = new Windows.UI.Xaml.Media.Imaging.BitmapImage();                bitMap.SetSource(await bmp.OpenReadAsync());                this.imgClicpboard.Source = bitMap;            }        }    }

现在它还可以复制图片了哦~

这里写图片描述



感谢您的访问,希望对您有所帮助。 欢迎大家关注、收藏以及评论。


为使本文得到斧正和提问,转载请注明出处:


你可能感兴趣的文章
Eclipse使用hibernate插件反向生成实体类和映射文件
查看>>
C - The C Answer (2nd Edition) - Exercise 1-2
查看>>
POJ 1579 Function Run Fun 记忆化递归
查看>>
天凉好个秋(连载九)
查看>>
spring的关于数据源的datasource接口的深入理解
查看>>
GO语言使用开源SSH模拟终端
查看>>
go-007-条件语句
查看>>
atol的实现【转】
查看>>
Ubuntu打开终端的方法三种
查看>>
【Git使用具体解释】Egit的经常使用操作具体解释
查看>>
zabbix 通过自定义key完成网卡监控
查看>>
WifiManager类具体解释
查看>>
cocos2dx3.2 android平台搭建开发环境纠错备忘录
查看>>
CDN(内容分发网络)技术原理
查看>>
Flask + mod_wsgi + Apache on Windows 部署成功(随时接受提问)
查看>>
提高代码编码的效率,习惯非常重要!
查看>>
maven最全教程
查看>>
对Inductive Bias(归纳偏置)的理解
查看>>
chest
查看>>
hdu 1215 七夕节
查看>>