.NET Framework 中的 DataObject

  在 .NET Framework 中,DataObject 类是实现数据传输机制的核心组件,它为拖放、剪贴板等操作提供了与格式无关的数据传输方式。它主要有两个实现,分别位于不同的命名空间:
System.Windows.Forms.DataObject——这个类主要用于 Windows 窗体(WinForms)应用程序。
  核心功能:实现 IDataObject 接口,提供一个容器来存储一种或多种格式的数据。
  主要用途:在拖放操作和剪贴板交互中作为数据载体。例如,当用户从一个文本框拖拽文字到另一个文本框时,数据就被封装在一个 DataObject 中进行传递。
  关键特性:
     可以在一个 DataObject 实例中存储多种格式的数据(如文本、位图、自定义对象等),以增加目标应用程序成功接收数据的可能性。
     支持数据的自动格式转换。例如,存储的文本数据可以被请求为 Unicode 格式。
     提供了 SetData、GetData、GetDataPresent 等方法来操作数据。
System.Windows.DataObject——这个类主要用于 Windows Presentation Foundation (WPF) 应用程序。
  核心功能:与 WinForms 版本类似,它也是 IDataObject 接口的基本实现,用于在 WPF 的 UI 元素之间传输数据。
  主要用途:支持 WPF 中的拖放、复制、粘贴等功能。
  关键特性:
    提供了更现代化的 API,例如 SetText、GetText、ContainsText 等,使得处理特定格式的数据更加方便。
    同样支持多种数据格式和自动转换。

protected override void OnMouseMove(MouseEventArgs e)
{
    base.OnMouseMove(e);
    if (e.LeftButton == MouseButtonState.Pressed)
    {
        // Package the data.
        DataObject data = new DataObject();
        data.SetData(DataFormats.StringFormat, circleUI.Fill.ToString());
        data.SetData("Double", circleUI.Height);
        data.SetData("Object", this);

        // Initiate the drag-and-drop operation.
        DragDrop.DoDragDrop(this, data, DragDropEffects.Copy | DragDropEffects.Move);
    }
}

 

posted @ 2026-03-30 18:36  echo-efun  阅读(22)  评论(0)    收藏  举报