Поделиться через


DataObject Класс

Определение

Реализует основной механизм передачи данных.

public ref class DataObject : System::Windows::Forms::IDataObject
public ref class DataObject : System::Runtime::InteropServices::ComTypes::IDataObject, System::Windows::Forms::IDataObject
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
public class DataObject : System.Windows.Forms.IDataObject
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
public class DataObject : System.Runtime.InteropServices.ComTypes.IDataObject, System.Windows.Forms.IDataObject
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
type DataObject = class
    interface IDataObject
    interface UnsafeNativeMethods.IOleDataObject
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
type DataObject = class
    interface IDataObject
    interface IDataObject
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
type DataObject = class
    interface IDataObject
    interface IDataObject
    interface IDataObject.Interface
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
type DataObject = class
    interface IDataObject
    interface IDataObject.Interface
    interface IDataObject
Public Class DataObject
Implements IDataObject
Public Class DataObject
Implements IDataObject, IDataObject
Наследование
DataObject
Атрибуты
Реализации

Примеры

В следующем примере кода данные добавляются DataObjectв . Сначала создается новый DataObject объект и сохраняется компонент. Затем он проверяет, существуют ли данные соответствующего типа в DataObject. Результат отображается в текстовом поле. Для этого кода требуется, чтобы textBox1 он был создан.

private:
   void AddMyData3()
   {
      // Creates a component to store in the data object.
      Component^ myComponent = gcnew Component;
      
      // Creates a new data object.
      DataObject^ myDataObject = gcnew DataObject;
      
      // Adds the component to the DataObject.
      myDataObject->SetData( myComponent );
      
      // Prints whether data of the specified type is in the DataObject.
      Type^ myType = myComponent->GetType();
      if ( myDataObject->GetDataPresent( myType ) )
      {
         textBox1->Text = String::Concat( "Data of type ", myType,
            " is present in the DataObject" );
      }
      else
      {
         textBox1->Text = String::Concat( "Data of type ", myType,
            " is not present in the DataObject" );
      }
   }
private void AddMyData3() {
    // Creates a component to store in the data object.
    Component myComponent = new Component();
 
    // Creates a new data object.
    DataObject myDataObject = new DataObject();
 
    // Adds the component to the DataObject.
    myDataObject.SetData(myComponent);
 
    // Prints whether data of the specified type is in the DataObject.
    Type myType = myComponent.GetType();
    if(myDataObject.GetDataPresent(myType))
       textBox1.Text = "Data of type " + myType.ToString() + 
       " is present in the DataObject";
    else
       textBox1.Text = "Data of type " + myType.ToString() +
       " is not present in the DataObject";
 }
Private Sub AddMyData3()
    ' Creates a component to store in the data object.
    Dim myComponent As New Component()
    
    ' Creates a new data object.
    Dim myDataObject As New DataObject()
    
    ' Adds the component to the DataObject.
    myDataObject.SetData(myComponent)
    
    ' Prints whether data of the specified type is in the DataObject.
    Dim myType As Type = myComponent.GetType()
    If myDataObject.GetDataPresent(myType) Then
        textBox1.Text = "Data of type " & myType.ToString() & _
            " is present in the DataObject"
    Else
        textBox1.Text = "Data of type " & myType.ToString() & _
            " is not present in the DataObject"
    End If
End Sub

В следующем примере извлекаются данные, хранящиеся в DataObject. Сначала создается новый DataObject объект с текстовыми данными. Затем данные извлекаются с указанием их формата в виде строки и отображаются в текстовом поле. Формат данных автоматически преобразуется из текста в строку. Для этого кода требуется, чтобы textBox1 он был создан.

void GetMyData2()
{
   // Creates a new data object using a string and the text format.
   DataObject^ myDataObject = gcnew DataObject( DataFormats::Text,"Text to Store" );
   
   // Prints the string in a text box.
   textBox1->Text = myDataObject->GetData( DataFormats::Text )->ToString();
}
private void GetMyData2() {
    // Creates a new data object using a string and the text format.
    DataObject myDataObject = new DataObject(DataFormats.Text, "Text to Store");
 
    // Prints the string in a text box.
    textBox1.Text = myDataObject.GetData(DataFormats.Text).ToString();
 }
Private Sub GetMyData2()
    ' Creates a new data object using a string and the text format.
    Dim myDataObject As New DataObject(DataFormats.Text, "Text to Store")
    
    ' Prints the string in a text box.
    textBox1.Text = myDataObject.GetData(DataFormats.Text).ToString()
End Sub

Комментарии

DataObject IDataObject реализует интерфейс , методы которого обеспечивают независимый от формата механизм для передачи данных.

Обычно DataObject используется с Clipboard и в операциях перетаскивания. Класс DataObject предоставляет рекомендуемую реализацию IDataObject интерфейса. Рекомендуется использовать класс , DataObject а не реализовывать IDataObject себя.

Несколько фрагментов данных в разных форматах могут храниться в DataObject. Данные извлекаются из объекта по связанному DataObject с ним формату. Так как целевое приложение может быть неизвестно, можно повысить вероятность того, что данные будут иметь соответствующий формат для приложения, разместив данные в DataObject в нескольких форматах. Ознакомьтесь DataFormats с предопределенными форматами. Вы можете реализовать собственный формат, создав экземпляр DataFormats.Format класса .

Чтобы сохранить данные в DataObject, передайте данные конструктору или вызовите SetData. Вы можете добавить данные в нескольких форматах в один и тот же DataObject. Если вы хотите, чтобы добавляемые данные извлеклись только в собственном формате, вызовите SetData(String, Boolean, Object) с параметром , для которого autoConvert задано значение false.

Данные можно получить из DataObject в любом формате, совместимом с GetData. Например, текст можно преобразовать в Юникод. Чтобы получить данные в формате, в котором они были сохранены, вызовите GetData с параметром , для которого autoConvert задано значение false.

Чтобы определить, в каких форматах хранятся данные, вызовите .GetFormats Чтобы определить, доступен ли формат, вызовите GetDataPresent с нужным форматом.

В платформа .NET Framework 2.0 класс предоставляет дополнительные методы, DataObject упрощающие работу с данными в общих форматах. Чтобы добавить данные определенного формата в DataObject, используйте соответствующий Set метод Format, например SetText. Чтобы получить данные определенного формата из DataObject, сначала вызовите соответствующий Contains метод Format (напримерContainsText, ), чтобы определить, содержит ли DataObject объект данные в этом формате, а затем вызовите соответствующий Get метод Format (напримерGetText, ), чтобы получить данные, если DataObject содержит их.

Примечание

При использовании формата метафайла с буфером обмена могут потребоваться особые рекомендации. Из-за ограничений в текущей DataObject реализации класса формат метафайла, используемый платформа .NET Framework, может не распознаться приложениями, используюющими старый формат метафайла. В этом случае необходимо взаимодействовать с программными интерфейсами (API) буфера обмена Win32.

Для помещения в буфер обмена объект должен быть сериализуемым. Дополнительные сведения о сериализации см System.Runtime.Serialization . в этой статье. Если целевому приложению требуется очень конкретный формат данных, заголовки, добавленные к данным в процессе сериализации, могут помешать приложению распознать ваши данные. Чтобы сохранить формат данных, добавьте данные в Byte виде массива в MemoryStream и передайте MemoryStreamSetData в метод .

Конструкторы

DataObject()

Инициализирует новый экземпляр класса DataObject.

DataObject(Object)

Инициализирует новый экземпляр класса DataObject и добавляет в него указанный объект.

DataObject(String, Object)

Инициализирует новый экземпляр класса DataObject и добавляет указанный объект в заданном формате.

Методы

ContainsAudio()

Показывает, содержит ли объект данные в формате WaveAudio.

ContainsFileDropList()

Указывает, содержит ли объект данные, которые имеют формат FileDrop или могут быть преобразованы в этот формат.

ContainsImage()

Указывает, содержит ли объект данные, которые имеют формат Bitmap или могут быть преобразованы в этот формат.

ContainsText()

Показывает, содержит ли объект данные в формате UnicodeText.

ContainsText(TextDataFormat)

Показывает, содержит ли объект текстовые данные в формате, указываемом заданным значением TextDataFormat.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetAudioStream()

Извлекает аудиопоток из объекта данных.

GetData(String)

Возвращает данные, связанные с заданным форматом.

GetData(String, Boolean)

Возвращает данные, связанные с указанным форматом, используя параметр автоматического преобразования, чтобы определить необходимость преобразования данных в этот формат.

GetData(Type)

Возвращает данные, связанные с заданным форматом типа класса.

GetDataPresent(String)

Определяет, связаны ли хранимые в этом экземпляре DataObject данные с указанным форматом и возможно ли их преобразование в этот формат.

GetDataPresent(String, Boolean)

Определяет, содержит ли этот экземпляр DataObject данные в указанном формате или данные, которые можно преобразовать в этот формат.

GetDataPresent(Type)

Определяет, связаны ли хранимые в этом экземпляре DataObject данные с указанным форматом и возможно ли их преобразование в этот формат.

GetFileDropList()

Извлекает из объекта данных коллекцию имен файлов.

GetFormats()

Возвращает список всех форматов, с которыми связаны или в которые могут быть преобразованы данные, хранящиеся в этом экземпляре DataObject.

GetFormats(Boolean)

Возвращает список всех форматов, в которых данные хранятся в этом экземпляре DataObject или в которые они могут быть преобразованы, используя параметр автоматического преобразования для определения необходимости извлечения только собственных форматов данных или всех форматов, в которые данные могут быть преобразованы.

GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetImage()

Извлекает изображение из объекта данных.

GetText()

Извлекает из объекта данных текст в формате UnicodeText.

GetText(TextDataFormat)

Извлекает текстовые данные из объекта данных в формате, указанном заданным значением TextDataFormat.

GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
SetAudio(Byte[])

Добавляет в объект данных массив Byte в формате WaveAudio после его преобразования в Stream.

SetAudio(Stream)

Добавляет поток Stream в объект данных в формате WaveAudio.

SetData(Object)

Добавляет указанный объект в DataObject, используя тип объекта в качестве формата данных.

SetData(String, Boolean, Object)

Добавляет указанный объект в DataObject в заданном формате и указывает возможность преобразования данных в другой формат.

SetData(String, Object)

Добавляет указанный объект в DataObject, используя заданный формат.

SetData(Type, Object)

Добавляет указанный объект в DataObject, используя заданный тип в качестве формата.

SetFileDropList(StringCollection)

Добавляет в объект данных коллекцию имен файлов в формате FileDrop.

SetImage(Image)

Добавляет объект Image в объект данных в формате Bitmap.

SetText(String)

Добавляет в объект данных текст в формате UnicodeText.

SetText(String, TextDataFormat)

Добавляет в объект данных текстовые данные в формате, указанном заданным значением TextDataFormat.

ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Явные реализации интерфейса

IDataObject.DAdvise(FORMATETC, ADVF, IAdviseSink, Int32)

Создает соединение между объектом данных и приемником уведомлений. Этот метод вызывается объектом, который поддерживает приемник уведомлений и позволяет уведомлять приемник об изменениях в данных объекта.

IDataObject.DUnadvise(Int32)

Разрывает соединение уведомления, которое было ранее установлено.

IDataObject.EnumDAdvise(IEnumSTATDATA)

Создает объект, который может использоваться для перечисления текущих соединений для рекомендаций.

IDataObject.EnumFormatEtc(DATADIR)

Создает объект для перечисления структур FORMATETC для объекта данных. Эти структуры используются в вызовах GetData(FORMATETC, STGMEDIUM) или SetData(FORMATETC, STGMEDIUM, Boolean).

IDataObject.GetCanonicalFormatEtc(FORMATETC, FORMATETC)

Предоставляет стандартную структуру FORMATETC, которая логически эквивалентна более сложной структуре. Этот метод применяется, чтобы определить, будут ли две различные структуры FORMATETC возвращать одинаковые данные, что позволяет избежать ненужной повторной отрисовки.

IDataObject.GetData(FORMATETC, STGMEDIUM)

Получает данные из исходного объекта данных. Метод GetData(FORMATETC, STGMEDIUM), который вызывается объектом-получателем данных, обрабатывает данные, описанные в заданной структуре FORMATETC, и передает их через заданную структуру STGMEDIUM. Затем вызывающий объект несет ответственность за освобождение структуры STGMEDIUM.

IDataObject.GetDataHere(FORMATETC, STGMEDIUM)

Получает данные из исходного объекта данных. Этот метод, который вызывается объектом-получателем данных, отличается от метода GetData(FORMATETC, STGMEDIUM), в котором вызывающий объект должен выделить и освободить заданную среду хранения.

IDataObject.QueryGetData(FORMATETC)

Определяет, способен ли объект данных выполнять отрисовку данных, описанных в структуре FORMATETC. Объекты, пытающиеся выполнять операцию вставки или перетаскивания, могут вызывать этот метод перед вызовом GetData(FORMATETC, STGMEDIUM), чтобы получить указание о том, может ли операция быть успешной.

IDataObject.SetData(FORMATETC, STGMEDIUM, Boolean)

Передает данные в объект, реализующий этот метод. Этот метод вызывается объектом, содержащим источник данных.

Применяется к

См. также раздел