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
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) параметр с заданным параметром autoConvertfalse.
Данные можно извлечь из DataObject любого формата, совместимого с GetData. Например, текст можно преобразовать в Юникод. Чтобы получить данные в формате, в котором он был сохранен, вызовите GetData параметр с заданным параметром autoConvertfalse.
Чтобы определить форматы, в которые хранятся данные, вызовите GetFormats. Чтобы определить, доступен ли формат, вызовите GetDataPresent нужный формат.
Класс DataObject предоставляет дополнительные методы, упрощающие работу с данными в общих форматах. Чтобы добавить данные определенного формата в DataObjectформат, используйте соответствующий Set метод Format, напримерSetText. Чтобы получить данные определенного формата из DataObjectопределенного формата, сначала вызовите соответствующий Contains метод Format (напримерContainsText), чтобы определить, содержат ли DataObject содержащиеся данные в этом формате, а затем вызовите соответствующий Get метод Format (напримерGetText), чтобы получить данные, если DataObject он содержится.
Note
При использовании формата метафайла с буфером обмена могут потребоваться специальные рекомендации. Из-за ограничений в текущей реализации класса DataObject формат метафайла, используемый платформой .NET Framework, может не распознаваться приложениями, используюющими старый формат метафайла. В этом случае необходимо взаимодействовать с интерфейсами программирования приложений Для буфера обмена Win32 (API).
Объект должен быть сериализуемым, чтобы его можно было поместить в буфер обмена. Дополнительные сведения о сериализации см. в статье System.Runtime.Serialization о сериализации. Если для целевого приложения требуется очень конкретный формат данных, заголовки, добавленные в данные в процессе сериализации, могут предотвратить распознавание данных приложением. Чтобы сохранить формат данных, добавьте данные в массив ByteMemoryStream и передайте MemoryStream его в SetData метод.
Конструкторы
| Имя | Описание |
|---|---|
| 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, Boolean) |
Возвращает данные, связанные с указанным форматом данных, с помощью параметра автоматического преобразования, чтобы определить, следует ли преобразовать данные в формат. |
| GetData(String) |
Возвращает данные, связанные с указанным форматом данных. |
| GetData(Type) |
Возвращает данные, связанные с указанным форматом типа класса. |
| GetDataPresent(String, Boolean) |
Определяет, содержит ли он DataObject данные в указанном формате или, при необходимости, содержит данные, которые можно преобразовать в указанный формат. |
| GetDataPresent(String) |
Определяет, связаны ли данные в этом 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, TextDataFormat) |
Добавляет текстовые данные в объект данных в формате, указанном указанным TextDataFormat значением. |
| SetText(String) |
Добавляет текстовые данные в объект данных в UnicodeText формате. |
| 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) |
Передает данные в объект, реализующий этот метод. Этот метод вызывается объектом, содержащим источник данных. |