Visão geral editores de tipo de Interface do usuário
Implementando um editor de tipo de interface (UI) do usuário, você pode fornecer uma experiência de tempo de design personalizada para os tipos de propriedade complexa.
Exibir e editar tipos personalizados
Ao expor 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 seu tipo personalizado. Para obter mais informações, consulte Como: Implementar um conversor de tipo.
Você pode editar sua propriedade com uma interface de usuário da lista suspensa. Isso é especialmente útil para 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 para 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
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 classe em um PropertyGrid com um editor de lista suspensa.
Acesso a um editor UI de drop-down tipo clicando no botão de seta () que aparece próximo à entrada da propriedade selecionada em um PropertyGrid. A UI personalizada for exibida, anexado ao PropertyGrid. A parte superior da sua janela será posicionada na parte inferior da entrada de propriedade e sua largura correspondente à entrada de propriedade. A 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 a 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 modais 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 Edit Columns caixa de diálogo do DataGridView controle são editores modal.
Acessar o editor UI de tipo restrito clicando no botão de reticências () que aparece próximo à entrada da propriedade selecionada em um PropertyGrid. A 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 executar pelo menos 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 o editor irá usar.
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 do valor em um PropertyGrid , realizando as seguintes tarefas:
Substituir GetPaintValueSupported para indicar que o editor suporta a exibir de representação. o valor
Substituir PaintValue para implementar a exibição de representação. o valor
Substituir o UITypeEditor método de construtor, se o editor deve ter comportamento de inicialização.
Observação |
---|
Editores de tipo de interface do usuário geralmente são implementados usando tipos a partir de System.Windows.Forms namespace, mas isso não é um requisito. Os editores de tipo de interface de 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 de 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 controle ou componente selecionado. Quando você seleciona uma propriedade, as consultas do ambiente de design do GetEditStyle método para determinar como representar a entrada de propriedade.
Sua substituição retorna um valor a partir de 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 |
---|---|
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 para um valor de propriedade. |
|
Exibe um botão de seta para baixo () na entrada de propriedade. A interface do usuário está hospedado em uma janela suspensa. |
|
Exibe um botão de reticências () 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 lista suspensa editor UI de tipo, você consulta um provedor de serviços para o IWindowsFormsEditorService interface. Esse serviço fornece informações de tamanho de sua interface do usuário e de posição. Normalmente, a interface do usuário 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, passa 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 de janela restrita
Para um editor de tipo de interface do usuário restrito, você consulta um provedor de serviços para o IWindowsFormsEditorService interface. Esse serviço fornece informações de posição para a 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, passa para o ShowDialog método para execução pelo ambiente de design. Se o valor de retorno desta chamada é OK, você recuperar o novo valor de propriedade do formulário e usá-la 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 de 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:
A PropertyDescriptor que representa os metadados da propriedade.
Um Instance propriedade refere-se ao componente que está selecionado na PropertyGrid.
O componente IContainer.
OnComponentChanginge OnComponentChanged métodos que alerta o ambiente de design, quando você altera o estado de um componente.
Fornecer uma representação gráfica do valor da propriedade.
Você pode exibir uma representação gráfica do valor da 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 um PropertyGrid.
Observação |
---|
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 de valor.
Consulte também
Tarefas
Como: Criar um Editor UI de tipo
Como: Criar um controle Windows Forms que tira proveito dos recursos de tempo de Design