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) | |
SetData(Object) |
Добавляет указанный объект в DataObject, используя тип объекта в качестве формата данных. |
SetData(String, Boolean, Object) |
Добавляет указанный объект в DataObject в заданном формате и указывает возможность преобразования данных в другой формат. |
SetData(String, Object) |
Добавляет указанный объект в DataObject, используя заданный формат. |
SetData(Type, Object) |
Добавляет указанный объект в DataObject, используя заданный тип в качестве формата. |
SetFileDropList(StringCollection) |
Добавляет в объект данных коллекцию имен файлов в формате FileDrop. |
SetImage(Image) | |
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) |
Передает данные в объект, реализующий этот метод. Этот метод вызывается объектом, содержащим источник данных. |