DataObject Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Implementa um mecanismo básico de transferência de dados.
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
- Herança
-
DataObject
- Atributos
- Implementações
Exemplos
O seguinte exemplo de código adiciona dados num DataObject. Primeiro, um novo DataObject é criado e um componente é armazenado nele. Depois, verifica se existem dados do tipo apropriado no DataObject. O resultado é apresentado numa caixa de texto. Este código exige que isso 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 exemplo seguinte recupera os dados armazenados num DataObject. Primeiro, é criado um novo DataObject com dados de texto. Depois, os dados são recuperados, especificando o seu formato como uma cadeia de caracteres, e apresentados numa caixa de texto. O formato de dados é automaticamente convertido de texto para string. Este código exige que isso 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
Observações
DataObject implementa a IDataObject interface, cujos métodos fornecem um mecanismo independente do formato para transferência de dados.
A DataObject é normalmente usado com e Clipboard em operações de arrastar e largar. A DataObject classe fornece a implementação recomendada da IDataObject interface. Sugere-se que use a DataObject disciplina em vez de se aplicar IDataObject a si próprio.
Múltiplos dados em diferentes formatos podem ser armazenados num DataObject. Os dados são recuperados de a DataObject pelo formato associado. Como a aplicação alvo pode não ser conhecida, pode aumentar a probabilidade de os dados estarem no formato apropriado para uma aplicação colocando os dados em DataObject vários formatos. Veja DataFormats os formatos pré-definidos. Podes implementar o teu próprio formato criando uma instância da DataFormats.Format classe.
Para armazenar dados num DataObject, passe os dados ao construtor ou chame SetData. Pode adicionar dados em vários formatos ao mesmo DataObject. Se quiser que os dados que adiciona sejam recuperados apenas no seu formato nativo, ligue SetData(String, Boolean, Object) com o autoConvert parâmetro definido como false.
Os dados podem ser recuperados de a DataObject em qualquer formato compatível com GetData. Por exemplo, o texto pode ser convertido para Unicode. Para recuperar dados no formato em que foram armazenados, chame GetData com o autoConvert parâmetro definido para false.
Para determinar em que formatos os dados estão armazenados, chame GetFormats. Para determinar se existe um formato disponível, ligue GetDataPresent pelo formato desejado.
A DataObject aula fornece métodos adicionais que facilitam o trabalho com dados em formatos comuns. Para adicionar dados de um determinado formato ao DataObject, use o método Format apropriadoSet, como SetText. Para recuperar dados de um determinado formato a partir do DataObject, chame primeiro o método Format apropriado Contains (como ContainsText) para determinar se o DataObject contém dados nesse formato, depois chame o método Format apropriado Get (como GetText) para recuperar os dados se o DataObject contiver.
Note
Podem ser necessárias considerações especiais ao usar o formato de metaficheiro com a Área de Transferências. Devido a uma limitação na implementação atual da classe DataObject, o formato de metaficheiro usado pelo .NET Framework pode não ser reconhecido por aplicações que utilizam um formato de metaficheiro mais antigo. Neste caso, deve interoperar com as interfaces de programação de aplicações (APIs) do Win32 Clipboard.
Um objeto deve ser serializável para ser colocado na área de transferência. Consulte System.Runtime.Serialization para mais informações sobre serialização. Se a sua aplicação de destino exigir um formato de dados muito específico, os cabeçalhos adicionados aos dados no processo de serialização podem impedir que a aplicação reconheça os seus dados. Para preservar o formato dos seus dados, adicione os seus dados como um Byte array para um MemoryStream e passe para MemoryStream o SetData método.
Construtores
| Name | Description |
|---|---|
| DataObject() |
Inicializa uma nova instância da DataObject classe. |
| DataObject(Object) |
Inicializa uma nova instância da DataObject classe e adiciona o objeto especificado a ela. |
| DataObject(String, Object) |
Inicializa uma nova instância da DataObject classe e adiciona o objeto especificado no formato especificado. |
Métodos
| Name | Description |
|---|---|
| ContainsAudio() |
Indica se o objeto de dados contém dados no WaveAudio formato. |
| ContainsFileDropList() |
Indica se o objeto de dados contém dados que estão no FileDrop formato ou podem ser convertidos para esse formato. |
| ContainsImage() |
Indica se o objeto de dados contém dados que estão no Bitmap formato ou podem ser convertidos para esse formato. |
| ContainsText() |
Indica se o objeto de dados contém dados no UnicodeText formato. |
| ContainsText(TextDataFormat) |
Indica se o objeto de dados contém dados de texto no formato indicado pelo valor especificado TextDataFormat . |
| 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, Boolean) |
Devolve os dados associados ao formato especificado, utilizando um parâmetro de conversão automatizado para determinar se deve converter os dados para o formato. |
| GetData(String) |
Devolve os dados associados ao formato de dados especificado. |
| GetData(Type) |
Devolve os dados associados ao formato de tipo de classe especificado. |
| GetDataPresent(String, Boolean) |
Determina se este DataObject contém dados no formato especificado ou, opcionalmente, contém dados que podem ser convertidos para o formato especificado. |
| GetDataPresent(String) |
Determina se os dados armazenados aqui DataObject estão associados ou podem ser convertidos para, o formato especificado. |
| GetDataPresent(Type) |
Determina se os dados armazenados aqui DataObject estão associados ou podem ser convertidos para, o formato especificado. |
| GetFileDropList() |
Recupera uma coleção de nomes de ficheiros a partir do objeto de dados. |
| GetFormats() |
Devolve uma lista de todos os formatos aos quais os dados armazenados DataObject aqui estão associados ou para os quais podem ser convertidos. |
| GetFormats(Boolean) |
Devolve uma lista de todos os formatos aos quais os dados armazenados DataObject aqui estão associados ou para os quais podem ser convertidos, usando um parâmetro automático de conversão para determinar se deve recuperar apenas formatos nativos de dados ou todos os formatos para os quais os dados podem ser convertidos. |
| GetHashCode() |
Serve como função de hash predefinida. (Herdado de Object) |
| GetImage() |
Recupera uma imagem do objeto de dados. |
| GetText() |
Recupera dados de texto do objeto de dados no UnicodeText formato. |
| GetText(TextDataFormat) |
Recupera dados de texto do objeto de dados no formato indicado pelo valor especificado TextDataFormat . |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| SetAudio(Byte[]) |
Adiciona um Byte array ao objeto de dados no WaveAudio formato após o converter para um Stream. |
| SetAudio(Stream) | |
| SetData(Object) |
Adiciona o objeto especificado ao DataObject usando o tipo de objeto como formato de dados. |
| SetData(String, Boolean, Object) |
Adiciona o objeto especificado ao DataObject usando o formato especificado e indicando se os dados podem ser convertidos para 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 formato. |
| SetFileDropList(StringCollection) |
Adiciona uma coleção de nomes de ficheiros ao objeto de dados no FileDrop formato. |
| SetImage(Image) | |
| SetText(String, TextDataFormat) |
Adiciona dados de texto ao objeto de dados no formato indicado pelo valor especificado TextDataFormat . |
| SetText(String) |
Adiciona dados de texto ao objeto de dados no UnicodeText formato. |
| ToString() |
Devolve uma cadeia que representa o objeto atual. (Herdado de Object) |
Implementações de Interface Explícita
| Name | Description |
|---|---|
| IDataObject.DAdvise(FORMATETC, ADVF, IAdviseSink, Int32) |
Cria uma ligação entre um objeto de dados e um sumidouro de aviso. Este método é chamado por um objeto que suporta um sumidouro de aviso e permite que o sumidouro de aviso seja notificado de alterações nos dados do objeto. |
| IDataObject.DUnadvise(Int32) |
Destrói uma ligação de notificação que tinha sido estabelecida anteriormente. |
| IDataObject.EnumDAdvise(IEnumSTATDATA) |
Cria um objeto que pode ser usado para enumerar as ligações de aconselhamento atuais. |
| IDataObject.EnumFormatEtc(DATADIR) |
Cria um objeto para enumerar as FORMATETC estruturas de um objeto de dados. Estas estruturas são usadas em chamadas para GetData(FORMATETC, STGMEDIUM) ou SetData(FORMATETC, STGMEDIUM, Boolean). |
| IDataObject.GetCanonicalFormatEtc(FORMATETC, FORMATETC) |
Fornece uma estrutura padrão FORMATETC logicamente equivalente a uma estrutura mais complexa. Use este método para determinar se duas estruturas diferentes FORMATETC devolveriam os mesmos dados, eliminando a necessidade de renderização duplicada. |
| IDataObject.GetData(FORMATETC, STGMEDIUM) |
Obtém dados a partir de um objeto de origem de dados. O GetData(FORMATETC, STGMEDIUM) método, chamado por um consumidor de dados, apresenta os dados descritos na estrutura especificada FORMATETC e transfere-os através da estrutura especificada STGMEDIUM . O chamador assume então a responsabilidade de libertar a STGMEDIUM estrutura. |
| IDataObject.GetDataHere(FORMATETC, STGMEDIUM) |
Obtém dados a partir de um objeto de origem de dados. Este método, chamado por um consumidor de dados, difere do GetData(FORMATETC, STGMEDIUM) método em que o chamador deve alocar e libertar o meio de armazenamento especificado. |
| IDataObject.QueryGetData(FORMATETC) |
Determina se o objeto de dados é capaz de renderizar os dados descritos na FORMATETC estrutura. Objetos que tentam uma operação de colar ou drop podem chamar este método antes de chamar GetData(FORMATETC, STGMEDIUM) para obter uma indicação de se a operação pode ser bem-sucedida. |
| IDataObject.SetData(FORMATETC, STGMEDIUM, Boolean) |
Transfere dados para o objeto que implementa este método. Este método é chamado por um objeto que contém uma fonte de dados. |