DataObject Classe

Definição

Implementa um mecanismo de transferência de dados básicos.

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
Herança
DataObject
Atributos
Implementações

Exemplos

O exemplo de código a seguir adiciona dados em um DataObject. Primeiro, um novo DataObject é criado e um componente é armazenado nele. Em seguida, ele verifica se os dados no tipo apropriado existem no DataObject. O resultado é exibido em uma caixa de texto. Esse código requer que textBox1 tenha sido criado.

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

O próximo exemplo recupera os dados armazenados em um DataObject. Primeiro, um novo DataObject é criado com dados de texto. Em seguida, os dados são recuperados, especificando seu formato como uma cadeia de caracteres e exibidos em uma caixa de texto. O formato de dados é convertido automaticamente de texto em cadeia de caracteres. Esse código requer que textBox1 tenha sido criado.

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

Comentários

DataObject implementa a IDataObject interface , cujos métodos fornecem um mecanismo independente de formato para transferência de dados.

Um DataObject normalmente é usado com o Clipboard e em operações de arrastar e soltar. A DataObject classe fornece a implementação recomendada da IDataObject interface . É recomendável que você use a DataObject classe em vez de IDataObject implementar a si mesmo.

Várias partes de dados em formatos diferentes podem ser armazenadas em um DataObject. Os dados são recuperados de um DataObject por seu formato associado. Como o aplicativo de destino pode não ser conhecido, você pode aumentar a probabilidade de que os dados estejam no formato apropriado para um aplicativo colocando os dados em um DataObject em vários formatos. Consulte DataFormats para obter os formatos predefinidos. Você pode implementar seu próprio formato criando uma instância da DataFormats.Format classe .

Para armazenar dados em um DataObject, passe os dados para o construtor ou chame SetData. Você pode adicionar dados em vários formatos ao mesmo DataObject. Se você quiser que os dados adicionados sejam recuperados apenas em seu formato nativo, chame SetData(String, Boolean, Object) com o autoConvert parâmetro definido falsecomo .

Os dados podem ser recuperados de um DataObject em qualquer formato compatível com GetData. Por exemplo, o texto pode ser convertido em Unicode. Para recuperar dados no formato em que foram armazenados, chame GetData com o autoConvert parâmetro definido falsecomo .

Para determinar em quais formatos os dados são armazenados, chame GetFormats. Para determinar se um formato está disponível, chame GetDataPresent com o formato desejado.

No .NET Framework 2.0, a DataObject classe fornece métodos adicionais que facilitam o trabalho com dados em formatos comuns. Para adicionar dados de um formato específico ao DataObject, use o método Format apropriadoSet, como SetText. Para recuperar dados de um formato específico do DataObject, primeiro chame o método Format apropriado Contains (como ContainsText) para determinar se o DataObject contém dados nesse formato e, em seguida, chame o método Format apropriado Get (como GetText) para recuperar os dados se o DataObject contiver.

Observação

Considerações especiais podem ser necessárias ao usar o formato de metarquivo com a Área de Transferência. Devido a uma limitação na implementação atual da DataObject classe , o formato de meta-arquivo usado pelo .NET Framework pode não ser reconhecido por aplicativos que usam um formato de meta-arquivo mais antigo. Nesse caso, você deve interoperar com as APIs (interfaces de programação de aplicativo) da Área de Transferência win32.

Um objeto deve ser serializável para que seja colocado na Área de Transferência. Consulte System.Runtime.Serialization para obter mais informações sobre serialização. Se o aplicativo de destino exigir um formato de dados muito específico, os cabeçalhos adicionados aos dados no processo de serialização poderão impedir que o aplicativo reconheça seus dados. Para preservar o formato de dados, adicione seus dados como uma Byte matriz a um MemoryStream e passe o MemoryStream para o SetData método .

Construtores

DataObject()

Inicializa uma nova instância da classe DataObject.

DataObject(Object)

Inicializa uma nova instância da classe DataObject e adiciona o objeto especificado a ela.

DataObject(String, Object)

Inicializa uma nova instância da classe DataObject e adiciona o objeto especificado no formato indicado.

Métodos

ContainsAudio()

Indica se o objeto de dados contém dados no formato WaveAudio.

ContainsFileDropList()

Indica se o objeto de dados contém dados que estão no formato FileDrop ou que podem ser convertidos para esse formato.

ContainsImage()

Indica se o objeto de dados contém dados que estão no formato Bitmap ou que podem ser convertidos para esse formato.

ContainsText()

Indica se o objeto de dados contém dados no formato UnicodeText.

ContainsText(TextDataFormat)

Indica se o objeto de dados contém dados de texto no formato indicado pelo valor TextDataFormat especificado.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetAudioStream()

Recupera um fluxo de áudio do objeto de dados.

GetData(String)

Retorna os dados associados ao formato de dados especificado.

GetData(String, Boolean)

Retorna os dados associados com o formato de dados especificado, usando um parâmetro de conversão automatizado para determinar se os dados devem ou não ser convertidos para o formato.

GetData(Type)

Retorna os dados associados ao formato do tipo de classe especificado.

GetDataPresent(String)

Determina se os dados armazenados neste DataObject estão associados ao formato especificado ou podem ser convertidos nele.

GetDataPresent(String, Boolean)

Determina se este DataObject contém dados no formato especificado ou, opcionalmente, contém dados que podem ser convertidos no formato indicado.

GetDataPresent(Type)

Determina se os dados armazenados neste DataObject estão associados ao formato especificado ou podem ser convertidos nele.

GetFileDropList()

Recupera uma coleção de nomes de arquivos do objeto de dados.

GetFormats()

Retorna uma lista de todos os formatos aos quais os dados armazenados neste DataObject estão associados ou nos quais eles podem ser convertidos.

GetFormats(Boolean)

Retorna uma lista de todos os formatos aos quais os dados armazenados neste DataObject estão associados ou nos quais eles podem ser convertidos, usando um parâmetro de conversão automática para determinar se é necessário recuperar somente os formatos de dados nativos ou todos os formatos nos quais os dados podem ser convertidos.

GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetImage()

Recupera uma imagem do objeto de dados.

GetText()

Recupera dados de texto do objeto de dados no formato UnicodeText.

GetText(TextDataFormat)

Recupera dados de texto do objeto de dados no formato indicado pelo valor TextDataFormat especificado.

GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
SetAudio(Byte[])

Adiciona uma matriz Byte ao objeto de dados no formato WaveAudio após convertê-la em um Stream.

SetAudio(Stream)

Adiciona um Stream ao objeto de dados no formato WaveAudio.

SetData(Object)

Adiciona o objeto especificado ao DataObject usando o tipo de objeto como o formato de dados.

SetData(String, Boolean, Object)

Adiciona o objeto especificado ao DataObject usando o formato especificado e indica se os dados podem ser convertidos em outro formato.

SetData(String, Object)

Adiciona o objeto especificado ao DataObject usando o formato especificado.

SetData(Type, Object)

Adiciona o objeto especificado ao DataObject usando o tipo especificado como o formato.

SetFileDropList(StringCollection)

Adiciona uma coleção de nomes de arquivo ao objeto de dados no formato FileDrop.

SetImage(Image)

Adiciona um Image ao objeto de dados no formato Bitmap.

SetText(String)

Adiciona dados de texto ao objeto de dados no formato UnicodeText.

SetText(String, TextDataFormat)

Adiciona dados de texto ao objeto de dados no formato indicado pelo valor TextDataFormat especificado.

ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Implantações explícitas de interface

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

Cria uma conexão entre um objeto de dados e um coletor de consultoria. Este método é chamado por um objeto compatível com um coletor de consultoria e o habilita para ser notificado sobre alterações nos dados do objeto.

IDataObject.DUnadvise(Int32)

Destrói um conexão de notificação que tinha sido estabelecida anteriormente.

IDataObject.EnumDAdvise(IEnumSTATDATA)

Cria um objeto que pode ser usado para enumerar as conexões de consultoria atuais.

IDataObject.EnumFormatEtc(DATADIR)

Cria um objeto para enumerar as estruturas FORMATETC de um objeto de dados. Essas estruturas são usadas em chamadas a GetData(FORMATETC, STGMEDIUM) ou SetData(FORMATETC, STGMEDIUM, Boolean).

IDataObject.GetCanonicalFormatEtc(FORMATETC, FORMATETC)

Fornece uma estrutura FORMATETC padrão logicamente equivalente a uma estrutura mais complexa. Use esse método para determinar se duas estruturas FORMATETC diferentes retornariam os mesmos dados, acabando com a necessidade de renderização duplicada.

IDataObject.GetData(FORMATETC, STGMEDIUM)

Obtém dados de um objeto de dados de origem. O método GetData(FORMATETC, STGMEDIUM), chamado por um consumidor de dados, renderiza os dados descritos na estrutura FORMATETC especificada e os transfere por meio da estrutura STGMEDIUM especificada. Em seguida, o chamador assume a responsabilidade por liberar a estrutura STGMEDIUM.

IDataObject.GetDataHere(FORMATETC, STGMEDIUM)

Obtém dados de um objeto de dados de origem. Esse método, chamado por um consumidor de dados, é diferente do método GetData(FORMATETC, STGMEDIUM) em que o chamador deve alocar e liberar o meio de armazenamento especificado.

IDataObject.QueryGetData(FORMATETC)

Determina se o objeto de dados é capaz de renderizar os dados descritos na estrutura FORMATETC. Objetos que tentam uma operação de colar ou de soltar podem chamar este método antes de chamar GetData(FORMATETC, STGMEDIUM) para obter uma indicação se a operação pode ser bem-sucedida.

IDataObject.SetData(FORMATETC, STGMEDIUM, Boolean)

Transfere dados ao objeto que implementa este método. Este método é chamado por um objeto que contém uma fonte de dados.

Aplica-se a

Confira também