验证测试 .NET 10 预览版的 Windows 窗体中的剪贴板新增功能 ...

打印 上一主题 下一主题

主题 1008|帖子 1008|积分 3024


媒介

在 .NET 10 中,Windows Forms 对剪贴板功能举行了更新,引入了新的 API 以进步类型安全性和克制使用 BinaryFormatter 带来的安全风险。

安装SDK

首先访问.NET 10.0.0-preview链接,下载.NET 10.0.0-preview.1版本SDK,然后直接安装即可。

安装完成后,可以通过dotnet --list-sdks指令查看是否已成功安装.NET 10 review 1

当我们创建.NET 10 类库时,却发现框架列表中并没有.NET 10 选项。
因为Visual Studio默认不可以使用预览版的SDK。因此我们先要在IDE中开启使用预览版SDK功能,具体开启方法如下:
首先选中菜单中的工具,然后点开选项对话框,在环境列表中找到预览功能,找到使用.NET SDK预览版复选框并选中,末了点击确认即可。记得需要重启Visual Studio。

示例API

现在,我们开始创建一个新的项目ClipboardExample,然后实现一些使用新剪贴板功能:
1. 使用 SetDataAsJson 方法将数据以 JSON 格式存储到剪贴板


  1. using System;
  2. using System.Windows.Forms;
  3. using System.Text.Json;
  4. namespace ClipboardExample
  5. {
  6.     public partial class MainForm : Form
  7.     {
  8.         public MainForm()
  9.         {
  10.             InitializeComponent();
  11.         }
  12.         private void SaveDataToClipboard_Click(object sender, EventArgs e)
  13.         {
  14.             var person = new Person { Name = "张三", Age = 30 };
  15.             // 使用 SetDataAsJson 方法将对象以 JSON 格式存储到剪贴板
  16.             Clipboard.SetDataAsJson("PersonData", person);
  17.             MessageBox.Show("Data saved to clipboard as JSON.");
  18.         }
  19.         private class Person
  20.         {
  21.             public string Name { get; set; }
  22.             public int Age { get; set; }
  23.         }
  24.     }
  25. }
复制代码
2. 使用 TryGetData 方法从剪贴板获取数据


  1. using System;
  2. using System.Windows.Forms;
  3. using System.Text.Json;
  4. namespace ClipboardExample
  5. {
  6.     public partial class MainForm : Form
  7.     {
  8.         public MainForm()
  9.         {
  10.             InitializeComponent();
  11.         }
  12.         private void GetDataFromClipboard_Click(object sender, EventArgs e)
  13.         {
  14.             if (Clipboard.TryGetData<Person>("PersonData", out var person))
  15.             {
  16.                 MessageBox.Show($"Name: {person.Name}, Age: {person.Age}");
  17.             }
  18.             else
  19.             {
  20.                 MessageBox.Show("Failed to get data from clipboard.");
  21.             }
  22.         }
  23.     }
  24. }
复制代码
3. 使用 TryGetData 方法并指定类型解析器

  1. using System;
  2. using System.Windows.Forms;
  3. using System.Text.Json;
  4. namespace ClipboardExample
  5. {
  6.     public partial class MainForm : Form
  7.     {
  8.         public MainForm()
  9.         {
  10.             InitializeComponent();
  11.         }
  12.         private void GetDataWithResolver_Click(object sender, EventArgs e)
  13.                 {
  14.                     Func<TypeName, Type> resolver = typeName =>
  15.                     {
  16.                         if (typeName.FullName == typeof(Person).FullName)
  17.                         {
  18.                             return typeof(Person);
  19.                         }
  20.                         return null;
  21.                     };
  22.                     if (Clipboard.TryGetData<Person>("PersonData", (Func<System.Reflection.Metadata.TypeName, Type>)resolver, out var person))
  23.                     {
  24.                         MessageBox.Show($"Name: {person.Name}, Age: {person.Age}");
  25.                     }
  26.                     else
  27.                     {
  28.                         MessageBox.Show("Failed to get data from clipboard.");
  29.                     }
  30.                 }
  31.     }
  32. }
复制代码
代码说明



  • SetDataAsJson 方法:将对象以 JSON 格式存储到剪贴板。第一个参数是数据的格式名称,第二个参数是要存储的对象。
  • TryGetData 方法:从剪贴板获取指定格式的数据。如果获取成功,返回 true 并将数据赋值给 out 参数;否则返回 false。
  • 类型解析器:TryGetData 方法的重载版本答应指定一个类型解析器,用于解析数据的类型。
执行效果



总结

上述简朴的测试了下剪切板的功能,后面我们在实验其他的内容,敬请等待~
欢迎进群交流学习~


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

欢乐狗

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表