媒介
在 .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 格式存储到剪贴板
- using System;
- using System.Windows.Forms;
- using System.Text.Json;
- namespace ClipboardExample
- {
- public partial class MainForm : Form
- {
- public MainForm()
- {
- InitializeComponent();
- }
- private void SaveDataToClipboard_Click(object sender, EventArgs e)
- {
- var person = new Person { Name = "张三", Age = 30 };
- // 使用 SetDataAsJson 方法将对象以 JSON 格式存储到剪贴板
- Clipboard.SetDataAsJson("PersonData", person);
- MessageBox.Show("Data saved to clipboard as JSON.");
- }
- private class Person
- {
- public string Name { get; set; }
- public int Age { get; set; }
- }
- }
- }
复制代码 2. 使用 TryGetData 方法从剪贴板获取数据
- using System;
- using System.Windows.Forms;
- using System.Text.Json;
- namespace ClipboardExample
- {
- public partial class MainForm : Form
- {
- public MainForm()
- {
- InitializeComponent();
- }
- private void GetDataFromClipboard_Click(object sender, EventArgs e)
- {
- if (Clipboard.TryGetData<Person>("PersonData", out var person))
- {
- MessageBox.Show($"Name: {person.Name}, Age: {person.Age}");
- }
- else
- {
- MessageBox.Show("Failed to get data from clipboard.");
- }
- }
- }
- }
复制代码 3. 使用 TryGetData 方法并指定类型解析器
- using System;
- using System.Windows.Forms;
- using System.Text.Json;
- namespace ClipboardExample
- {
- public partial class MainForm : Form
- {
- public MainForm()
- {
- InitializeComponent();
- }
- private void GetDataWithResolver_Click(object sender, EventArgs e)
- {
- Func<TypeName, Type> resolver = typeName =>
- {
- if (typeName.FullName == typeof(Person).FullName)
- {
- return typeof(Person);
- }
- return null;
- };
- if (Clipboard.TryGetData<Person>("PersonData", (Func<System.Reflection.Metadata.TypeName, Type>)resolver, out var person))
- {
- MessageBox.Show($"Name: {person.Name}, Age: {person.Age}");
- }
- else
- {
- MessageBox.Show("Failed to get data from clipboard.");
- }
- }
- }
- }
复制代码 代码说明
- SetDataAsJson 方法:将对象以 JSON 格式存储到剪贴板。第一个参数是数据的格式名称,第二个参数是要存储的对象。
- TryGetData 方法:从剪贴板获取指定格式的数据。如果获取成功,返回 true 并将数据赋值给 out 参数;否则返回 false。
- 类型解析器:TryGetData 方法的重载版本答应指定一个类型解析器,用于解析数据的类型。
执行效果
总结
上述简朴的测试了下剪切板的功能,后面我们在实验其他的内容,敬请等待~
欢迎进群交流学习~
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |