- 13.01 Introdução
- 13.02 Menus
- 13.03 LinkLabels
- 13.04 ListBox e CheckedListBoxes
- 13.04.01 ListBoxes
- 13.04.02 CheckedListBoxes
- 13.05 ComboBoxes
- 13.06 TreeViews
- 13.07 ListViews
- 13.08 Controle com Guias
- 13.09 Janelas MDI
- 13.10 Herança Visual
- 13.11 Controles Definidos pelo Usuário
Este capítulo continua nosso estudo das GUIs.
Os menus são usados para fornecer grupos de comandos relacionados para aplicativos Windows.
Os menus são parte integrante de uma GUI, pois eles tornam as ações do usuário possíveis, sem "congestionamento" desnecessário da GUI.
Propriedades e eventos do MainMenu e MenuItem (DESATUALIZADO)
| Eventos e propriedades | Descrição |
|---|---|
| Propriedades de MainMenu | |
| MenuItem | Relaciona os MenuItems que estão contidos no MainMenu |
| RightToLeft | Faz o texto ser exibido da direta para a esquerda |
| Propriedades MenuItem | |
| Checked | Indica se um item de menu está marcado |
| Index | Especifica a posição de um item de menu específico |
| MenuItem | Relaciona os itens de um submenu de um item de menu específico |
| MergeOrder | Configura a posição de um item de menu quando seu menu progenitor é combinado com outro menu |
| MergeType | Pega um valor da enumeração MenuMerge |
| RadioCheck | Indica se um item de menu selecionado aparece como um botão de rádio ou exibe uma marca de visto |
| Shortcut | Especifica a tecla de atalho para o item de menu |
| ShowShortcut | Indica se uma tecla de atalho é mostrada ao lado do texto do item de menu |
| Text | Especifica o texto que aparece no item de menu |
| Evento comum | |
| Click | Gerado quando o item é clicado ou a tecla de talho é usada |
- Fig. 13.04: MenuTest.cs
Usando menus para alterar cores e estilos de fonte.
O controle LinkLabel exibe links para outros objetos, como arquivos ou páginas Web.
Propriedades e eventos de LinkLabel
| Propriedades e eventos | Descrição |
|---|---|
| Propriedades comuns | |
| ActiveLinkColor | Especifica a cor do link ativo quando clicado |
| LinkArea | Especifica qual parte do texto no LinkLabel é tratada como parte do link |
| LinkBehavior | Especifica o comportamento do link |
| LinkColor | Especifica a cor original de todos os links antes que eles tenham sido visitados |
| Links | Relaciona os objetos LinkLabel.Link, que são links contidos no LinkLabel |
| LinkVisited | Se for true, o link aparecerá como se fosse visitado |
| Text | Especifica o texto que vai aparecer no controle |
| UseMnemonic | Se for true, o caractere & na propriedades Text atuará cp,p um atalho |
| VisitedLinkColor | Especifica a cor dos links visitados |
| Evento comum | |
| LinkClicked | Gerado quando o link é clicado |
- Fig. 13.07: LinkLabelTest.cs
Usando LinkLabels para criar links.
O controle ListBoxe permite que o usuário veja e selecione dentre múltiplos itens em uma lista.
O controle CheckedListBoxe estende uma ListBoxe, incluindo caixas de seleção ao lado de cada item da lista.
Propriedades, métodos e eventos de ListBoxe
| Propriedades, métodos e eventos | Descrição |
|---|---|
| Propriedades comum | |
| Items | Relaciona a coleção de itens dentro da ListBox |
| MultiColumn | Indica se a ListBox pode dividir uma lista em múltiplas colunas |
| SelectedIndex | Retorna o índice do item atualmente selecionado |
| SelectedIndices | Retorna uma coleção dos dos índices de todos os itens atualmente selecionados |
| SelectedItem | Retorna uma referência para o item atualmente selecionado |
| SelectedItems | Retorna uma coleção dos itens atualmente selecionados |
| SelectionMode | Determina o número de itens que podem ser selecionados e os meios de selecionar múltiplos itens |
| Sorted | Indica se os itens aparecem em ordem alfabética |
| Método comum | |
| GetSelected | Pega um índice e retorna true, caso o item correspondente seja selecionado |
| Evento comum | |
| SelectedIndexChanged | Gerado quando o índice selecionado muda |
- Fig 13.11: ListBoxTest.cs
Programa para adicionar, remover e limpar itens de caixa de lista.
Propriedades, métodos e eventos de CheckedListBox
| Propriedades, métodos e eventos | Descrição |
|---|---|
| Propriedade comuns | |
| CheckedItem | Relaciona a coleção de itens que estão marcados |
| CheckedIndices | Retorna índices para os itens que estão marcados |
| SelectionMode | Determina quantos itens podem ser marcados |
| Método comuns | |
| GetItemChecked | Recebe um índice e retorna True se o item correspondente estiver marcado |
| Evento comum | |
| ItemCheck | Gerado quando um item é marcado ou desmarcado |
| Propriedades de ItemCheckEventArgs | |
| CurrentValue | Indica se o item atual está marcado ou desmarcado |
| Index | Retorna o índice do item que mudou |
| NewValue | Especifica o novo estado do item |
- Fig. 13.13: CheckedListBoxTest.cs
Usando as caixas de lista marcadas para adicionar itens em uma caixa de lista.
O controle ComboBox combina os recursos de TextBox com uma lista suspensa.
A lista suspensa é um componente de GUI que contém uma lista a partir da qual valores podem ser escolhidos.
Propriedades e eventos de ComboBoxes
| Eventos e propriedades | Descrição |
|---|---|
| Propriedades comuns | |
| DropDownStyle | Determina o tipo de caixa de combinação |
| Items | A coleção de itens no controle ComboBox |
| MaxDropDownItems | Especifica o número máximo de itens que podem aparecer na lista suspensa |
| SelectedIndex | Retorna o índice do item atualmente selecionado |
| SelectedItem | Retorna uma referência para o item atualmente selecionado |
| Sorted | Especifica se itens em uma lista estão em ordem alfabética |
| Evento comum | |
| SelectedIndexChanged | Gerado quando índice selecionado muda |
- Fig. 13.16: ComboBoxTest.cs
Usando ComboBox para selecionar a figura a ser desenhada.
O controle TreeViews mostra nós hierarquicamente em uma árvore.
Tradicionalmente, os nós são objetos que contêm valores e podem se referir a outros nós.
Um nó progenitor contém nós filhos, que podem ser progenitores de outros nós.
Propriedades e métodos de TreeNode
| Propriedades e eventos | Descrição |
|---|---|
| Propriedades comuns | |
| CheckBox | Indica se caixas de seleção aparecem ao lado dos nós |
| ImageList | Indica a ImageList usada para exibir ícones ao lado dos nós |
| Nodes | Relaciona a coleção de TreeNode no controle |
| SelectedNode | O nó atualmente selecionado |
| Evento comum | |
| AfterSelect | Gerado após o nó selecionado mudar |
Propriedades e métodos de TreeNode
| Propriedades e eventos | Descrição |
|---|---|
| Propriedades comuns | |
| Checked | Indica se o TreeNode está marcado |
| FirstNode | Especifica o primeiro nó na coleção de Nodes |
| Propriedade comuns | |
| FullPath | Indica o caminho do nó |
| ImageIndex | Especifica o índice da imagem a ser exibida quando o nó perder a seleção |
| LastNode | Especifica o último nó na coleção Nodes |
| NextNode | Próximo nó irmão |
| Nodes | A coleção de TreeNode contidos no nó atual |
| PrevNode | Indica o nó irmão anterior |
| SelectedImageIndex | Especifica o índice da imagem a ser usada quando o nó for selecionado |
| Text | Especifica o texto a ser exibido na TreeView |
| Métodos comuns | |
| Collapse | Recolhe um nó |
| Expand | Expande um nó |
| ExpandAll | Expande todos os filhos de um nó |
| GetNodeCount | Retorna o número de nós filhos |
- Fig. 13.21: TreeViewDirectoryStructureTest.cs
Usando TreeView para exibir estruturas de diretórios.
O controle ListView é semelhante a uma ListBox, no sentido de que ambos exibem listas a partir das quais o usuário pode selecionar um ou mais itens.
A diferença importante entre as duas classes é que uma ListView pode exibir ícones ao lado dos itens da lista de várias maneiras.
Propriedades e eventos de ListView
| Eventos e propriedades | Descrição |
|---|---|
| Propriedades comuns | |
| Activation | Determina como o usuário ativa um item |
| CheckBox | Indica se os itens aparecem com caixas de seleção |
| LargeImageList | Indica a ImageList usada ao exibir ícones grandes |
| Items | Retorna a coleção de ListViewItem no controle |
| MultiSelect | Determina se seleção múltipla é permitida |
| SelectedItems | Relaciona a coleção de itens atualmente selecionada |
| SmallImageList | Especifica a ImageList usada ao exibir ícones pequenos |
| View | Determina a aparência de ListViewItem |
| Evento comum | |
| ItemActivate | Gerado quando um item na ListView é ativado |
- Fig. 13.24: ListViewTest.cs
Exibindo diretórios e seus conteúdos na ListView.
O controle TabControl cria janelas com guias, como aquelas que vimos no IDE do Visual Studio .NET.
Isso permite ao programador projetar interfaces com o usuário que encaixam um grande
número de controles ou um grande volume de dados, sem usar espaço valioso da tela.
Propriedades e eventos de TabControl
| Propriedades e eventos | Descrição |
|---|---|
| Propriedades comuns | |
| ImageList | Especifica as imagens a serem exibidas em uma guia |
| ItemSize | Especifica o tamanho da guia |
| MultiLine | Indica se múltiplas linhas de guias podem ser exibidas |
| SelectedIndex | Indica o índice da TabPage que está selecionada |
| SelectedTab | Indica a TabPage que está selecionada |
| TabCount | Retorna o número de guias |
| TabPages | Obtém a coleção de TabPage dentro de nosso TabControl |
| Evento comum | |
| SelectedIndexChanged | Gerado quando SelectedImageIndex muda |
- Fig. 13.29: UsingTabs.cs
Usando TabControl para exibir várias configurações de fonte.
Tais programas suportam apenas uma janela ou documento aberto por vez.
Os programas MDI (Multiple Document Interface), permitem aos usuários editar vários documentos simultaneamente.
Os programas MDI também tendem a ser mais complexos.
A janela de aplicativo de um programa MDI é chamada de janela progenitora, e cada janela dentro do aplicativo é referida como janela filha.
Eventos e propriedades de progenitor e filho MDI (DESATUALIZADO)
| Eventos e propriedades | Descrição |
|---|---|
| Propriedades comuns de filho MDI | |
| IsMdiChild | Indica se o Form é um filho MDI |
| MdiParent | Especifica o Form progenitor MDI do filho |
| Propriedades comuns de progenitor MDI | |
| ActiveMdiChild | Retorna o Form MDI atualmente ativo |
| IsMdiContainer | Indica se um Form pode ser um MDI |
| MdiChildren | Retorna os filhos MDI como um array de Form |
| Método comum | |
| LayoutMdi | Determina a exibição dos formulários em um progenitor MDI |
| Evento comum | |
| MdiChildActive | Gerado quando um filho MDI é fechado ou ativado |
- Fig. 13.36: UsingMDI.cs
Demonstrando o uso de janelas progenitoras e filhas MDI.
No C# também podemos usar herança para criar Form que exibem uma GUI,
pois eles são classes derivadas da class System.Windows.Forms.Form.
A herança visual nos permite criar um novo Form, herdando de outro Form.
A herança visual permite que os desenvolvedores obtenham consistência visual entre aplicativos por meio da reutilização de código.
- Fig. 13.37: Child.cs
Janela filha de progenitor MDI.
Antes de derivar um formulário da classe VisualInheritance, devemos empacotar a classe VisualInheritance em uma .dll.
- Fig. 13.38: VisualInheritance.cs
Formulário base para uso com herança visual.
A GUI contém os componentes derivados da classe VisualInheritance.
- Fig. 13.40: VisualInheritanceTest.cs
Formulário derivado usando herança visual.
A plataforma .NET permite aos programadores criarem controles personalizados que herdam de uma variedade de classes.
A maneira mais simples de criar um controle personalizado é derivar uma classe de um controle de formulário Windows existente.
(Pode ser útil pesquisar mais sobre)
Criação de controles personalizados
| Técnicas de controle personalizado e propriedades de PaintEventArgs | Descrição |
|---|---|
| Herdar do controle de formulário Windows | Adiciona funcionalidade em um controle existente |
| Criar um UserControl | Crie um UserControl composto de vários controles previamente existentes |
| Herdar da classe Control | Defina um novo controle |
| Propriedades de PaintEventArgs | Use esse objeto dentro do método OnPaint ou Paint |
| Graphics | Indica o objeto gráfico do controle |
| ClipRectangle | Especifica o retângulo que indica os limites do controle |
- Fig. 13.42: ClockUserControl.cs
Controle definido pelo usuário com um temporizador e um rótulo.
Os passos anteriores são úteis quando precisamos definir um controle personalizado para o projeto em que estamos trabalhando.
(Pode ser útil pesquisar mais sobre .dll, pois assim, podemos compartilhar melhor nossos códigos)