Compartilhar via


Visão geral dos editores de tipos da interface do usuário

Você pode fornecer uma experiência de tempo de design personalizada para tipos de propriedade complexa, Implementando um editor de tipo de interface (UI) do usuário.

Exibir e editar tipos personalizados

Ao ser exposto a um tipo personalizado como uma propriedade, há três maneiras de editar o valor da propriedade em um PropertyGrid:

  • Você pode editar sua propriedade no lugar como uma seqüência de caracteres. Isso requer um TypeConverter para o seu tipo personalizado. Para obter mais informações, consulte Como implementar um conversor de tipos.

  • Você pode editar sua propriedade com uma interface de usuário da lista suspensa. Isso é especialmente útil para as propriedades que podem ser definidas com um único clique.

  • Você pode editar sua propriedade com uma caixa de diálogo modal. Se sua propriedade for particularmente complexa, uma caixa de diálogo completo pode ser necessária editá-lo corretamente.

Para habilitar o clique único ou a edição da caixa de diálogo restrita, você precisa implementar um editor UI de tipo para interagir com um PropertyGrid.

Drop-down editores são ideais para tipos que podem ser definidos com um único clique. Por exemplo, edite o Dock e BackColor propriedades da Control de classe em um PropertyGrid com um editor de lista suspensa.

Acesso a um editor UI de lista suspensa tipo clicando no botão de seta (Janela de propriedades para baixo) que aparece próximo à entrada da propriedade selecionada em um PropertyGrid. Sua interface do usuário personalizada for exibida, anexado ao PropertyGrid. A parte superior da janela que a está posicionada na parte inferior da entrada de propriedade, e sua largura correspondente da entrada de propriedade. Esta janela do editor também deve ser fechada depois que o usuário faz uma seleção. Sua implementação deve chamar o DropDownControl método para posicionar e dimensionar sua interface do usuário digite a janela do editor no ambiente de design, e você deve chamar o CloseDropDown método para fechar a janela.

Editores de diálogo modal

Editores de janela restritas são úteis para tipos que exigem uma interface de usuário totalmente interativo. Por exemplo, os editores de coleção como o TabPage Collection Editor de TabControl ou o Edit Columns caixa de diálogo da DataGridView controle são editores modais.

Acesso a um editor UI de tipo modal clicando no botão de reticências (Captura de tela de VisualStudioEllipsesButton) que aparece próximo à entrada da propriedade selecionada em um PropertyGrid. Sua caixa de diálogo modal aparece e o usuário interage com ele como uma caixa de diálogo típicas. Sua implementação deve chamar o ShowDialog método para posicionar e dimensionar a sua caixa de diálogo no ambiente de design.

Implementando um Editor UI de tipo

Para implementar um editor UI de tipo personalizado, você deve pelo menos executar as seguintes tarefas:

  • Definir uma classe que deriva de UITypeEditor.

  • Substituir o GetEditStyle método para informar o PropertyGrid do tipo de estilo do editor que usará o editor.

  • Substituir o EditValue método para manipular a interface do usuário, processamento de entrada do usuário e atribuição de valor.

Você pode adicionar suporte adicional para pintar a representação de um valor em um PropertyGrid , realizando as seguintes tarefas:

  • Substituir GetPaintValueSupported para indicar que o editor suporta exibindo a representação do valor.

  • Substituir PaintValue para implementar a exibição de representação do valor.

  • Substituir o UITypeEditor método construtor se o editor deve ter um comportamento de inicialização.

Dica

Editores de tipo de interface do usuário são geralmente implementados usando tipos a partir do System.Windows.Forms namespace, mas isso não é um requisito.Os editores de tipo de interface do usuário padrão na.NET Framework derivam de UITypeEditor.

Derivação da classe UITypeEditor

Seu editor de tipos de interface do usuário personalizado deve derivar da UITypeEditor classe. Defina um construtor padrão se o seu editor de tipos de interface do usuário requer inicialização especial.

Substituindo o método GetEditStyle

Quando você seleciona um componente ou controle no designer, o Propriedades janela é redesenhada com os valores de propriedade do componente selecionado ou controle. Quando você seleciona uma propriedade, as consultas do ambiente de design do GetEditStyle método para determinar como representar a entrada de propriedade.

Seu substituto retorna um valor a partir do UITypeEditorEditStyle enumeração para comunicar-se o estilo apropriado do editor do tipo de interface do usuário.

A tabela a seguir mostra o comportamento associado a cada UITypeEditorEditStyle valor.

Nome do membro

Comportamento

None

Não fornece a nenhum componente de interface do usuário interativo. Um número apropriado TypeConverter é usado para converter uma entrada de seqüência de caracteres ao valor da propriedade.

DropDown

Exibe um botão de seta para baixo (Janela de propriedades para baixo) na entrada de propriedade. A interface do usuário está hospedado em uma janela de lista suspensa.

Modal

Exibe um botão de reticências (Captura de tela de VisualStudioEllipsesButton) na entrada de propriedade. A interface do usuário é uma caixa de diálogo modal.

Substituindo o método EditValue

O EditValue método exibe a interface do usuário e define o valor da propriedade para o valor selecionado pelo usuário.

Editor de lista suspensa

Para um editor de tipo suspenso da interface do usuário, você pode consultar um provedor de serviços para o IWindowsFormsEditorService interface. Esse serviço fornece informações sobre o tamanho de sua interface do usuário e de posição. A interface do usuário normalmente será implementado como um Control. O EditValue implementação cria uma instância desse controle, inicializa com o valor atual da propriedade e, em seguida, passá-lo para o DropDownControl método para execução pelo ambiente de design. Quando o usuário tiver selecionado um novo valor para a propriedade, o EditValue implementação fecha a interface do usuário chamando CloseDropDown. O valor de retorno do seu EditValue implementação torna-se o novo valor da propriedade exibido em um PropertyGrid.

Editor modal

Para um editor modal de tipo de interface do usuário, você pode consultar um provedor de serviços para o IWindowsFormsEditorService interface. Esse serviço fornece informações de posição para sua caixa de diálogo. A interface do usuário normalmente será implementado como uma classe derivada de Form. O EditValue implementação cria uma instância desse formulário, inicializa com o valor atual da propriedade e, em seguida, passá-lo para o ShowDialog método para execução pelo ambiente de design. Se o valor de retorno desta chamada é OK, você recupera o novo valor da propriedade do formulário e usá-lo como o valor de retorno. O valor de retorno do seu EditValue implementação torna-se o novo valor da propriedade exibido em um PropertyGrid.

Parâmetro ITypeDescriptorContext

O EditValue método recebe um ITypeDescriptorContext parâmetro, que você pode usar para consultar informações contextuais sobre o ambiente de design. Com esse parâmetro, você pode acessar os seguintes membros:

Fornecer uma representação gráfica do valor da propriedade

Você pode exibir uma representação gráfica do valor da sua propriedade, substituindo o PaintValue método. Você pode usar o fornecido PaintValueEventArgs parâmetro para desenhar sua representação em um pequeno retângulo no lado esquerdo da entrada da propriedade em um PropertyGrid.

Dica

Certifique-se de manter sua representação gráfica dentro dos limites definidos pelo Bounds propriedade da PaintValueEventArgs parâmetro.

Substituir o GetPaintValueSupported método para retornar true para o ambiente de design de alerta que o seu editor de tipos de interface do usuário pinta uma representação personalizada do seu valor.

Consulte também

Tarefas

Como criar um editor de tipos da interface do usuário

Como criar um controle do Windows Forms que aproveita recursos de tempo de design

Referência

UITypeEditorEditStyle

IWindowsFormsEditorService

Outros recursos

Editores de tipos da interface do usuário