E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
Interfaces windows em c sharp
1. - 1 -
Interfaces Windows com C#
C# é uma linguagem orientada ao objecto moderna que possibilita os programadores a construir
rápida e facilmente soluções para a plataforma Microsoft .NET. E este trabalho tem como objectivo
apresentar alguns dos comandos e utilidades de Interfaces Windows com o C#.
Redimensionamento de Forms
Dock
Dock é a propriedade que fixa o seu componente a alguma borda do formulário.
this.button1.Dock = System.Windows.Forms.DockStyle.Left;
Para ver em acção esta propriedade, coloca-se aleatoriamente sete botões numa form, como se vê
na imagem:
Digita-se em seguida o código abaixo no evento Load do formulário.
private void Form1_Load(object sender, System.EventArgs e)
{
this.button1.Dock = System.Windows.Forms.DockStyle.Top;
this.button2.Dock = System.Windows.Forms.DockStyle.Top;
this.button3.Dock = System.Windows.Forms.DockStyle.Bottom;
this.button4.Dock = System.Windows.Forms.DockStyle.Bottom;
2. - 2 -
this.button5.Dock = System.Windows.Forms.DockStyle.Left;
this.button6.Dock = System.Windows.Forms.DockStyle.Right;
this.button7.Dock = System.Windows.Forms.DockStyle.Fill;
}
O resultado será igual à imagem:
Muito interessante, porém pouco funcional. Propondo um exemplo funcional, vamos simular um
Windows explorer e utilizar a propriedade Dock para funcionalidades mais úteis.
Numa form introduzimos uma treeview e alteramos a propriedade Dock para left. Colocamos
agora um componente splitter, que serve para redimensionar a treeview quando o programa estiver a
“correr”, que possui já por default a propriedade Dock como Left.
Coloca-se agora o componente listview do lado direito do spliter e configura-se a propriedade
Dock para Fill. Visualmente já possuímos um simulador de Windows Explorer, que pode ser
redimensionado livremente sem comprometer sua visualização.
3. - 3 -
Anchor
Passando para a propriedade Anchor, a sua finalidade é definir uma constante de limite entre a
borda e o próprio elemento, ou seja, ancorar o seu componente a uma ou mais das suas bordas.
Assim como a propriedade Dock, Anchor pode ser alterada na janela Properties ou no decorrer
do programa através de código. Vejamos o exemplo seguinte:
this.button1.Anchor = (System.Windows.Forms.AnchorStyles.Bottom |
System.Windows.Forms.AnchorStyles.Right);
Esta propriedade é muito útil quando desejamos ter o controle de como os componentes irão ser
“esticados”.
Vamos considerar o formulário a seguir:
Sem alterar nenhuma propriedade default, ao executarmos o programa se maximizarmos o form,
os componentes não se movem e o formulário fica com uma imensa área cinza inútil. Pode-se desejar
que o componente da descrição seja aumentado para facilitar a sua visualização.
4. - 4 -
Para resolver este problema procedemos aos seguintes passos:
1. A label consulta não precisa de ser alterado. Por default esta ancorado como Left e Top.
2. Na combobox altera-se a propriedade Anchor para Left, Top e Right. Assim será esticado
horizontalmente.
3. Na label descrição, altera-se a propriedade Anchor somente para Left. Assim continuará
centralizado em relação ao textbox.
4. Na textbox, marca-se todas as opções, ou seja, Left, Top, Right e Bottom.
5. Finalmente altera-se os botões para Right e Bottom.
Para ficar ainda melhor, alterar-se a propriedade MinimumSize do formulário para o tamanho
actual do mesmo. Desta forma, se o utilizador tentar diminuir demais o form, não irá esconder os seus
componentes.
Panels
Considerando o seguinte formulário, para o redimensionar teríamos de utilizar as propriedades
Dock e Anchor. Contudo, para o conseguir esse efeito dependemos mais do que isso, pois não é
permitido no mesmo componente alterar as propriedades Dock e Anchor ao mesmo tempo.
Como solução a este problema utilizamos os Panels, que servem como container de componetes.
Divide-se o form em duas partes conforme a imagem sugere. As cores diferentes dos panels são
para facilitar a sua visualização e compreensão. No panel vermelho, alterar-se a propriedade Dock
para Top e no verde para Fill.
5. - 5 -
No panel vermelho, coloca-se mais dois novos panels, dividindo a área entre eles. Para isso
alterar-se a propriedade Dock do panel amarelo para Left e do Azul para Fill.
Ao executar o programa e maximizar o formulário os panels com Dock igual a Fill
redimensionam conforme o form, o panel amarelo permanece inalterado.
Agora basta preencher os panels com os seus componentes respectivos do formulário inicial,
com as seguintes regras:
• O panel amarelo e azul não são redimensionados verticalmente;
• O panel amarelo não é redimensionado horizontalmente.
6. - 6 -
Controlos de Interface
Os componentes de diálogo dos formulários são as mesmas caixas de diálogo encontradas no
sistema do Windows, temos o OpenFileDialog, para abrir um ficheiro; o SaveFileDialog, para gravar
um ficheiro; o PrintDialog, caixa de diálogo para impressão de um ficheiro, FontDialog, caixa de
diálogo para mudar a font de um documento, ColorDialog, muda a cor de um documento, etc.
Para usar uma caixa de diálogo, na toobox arrasta-se para a form o componente pertendido, que
não aparecerá quando a form estiver a correr. Coloca-se um botão ou cria-se um menu, que será usado
para chamar a caixa de diálogo.
Open File Dialog
Este componente apresenta ao usuário uma caixa de diálogo que permite abrir ficheiros que
retorna o caminho e o nome do ficheiro seleccionado na caixa de diálogo.
Ao componente Openfiledialog deu-se o nome cdAbrir. No Menu Guardar para abrir um ficheiro
na caixa de diálogo para uma rich text box, com o nome rtbficheiro, implementa-se o código:
7. - 7 -
private void Abrir_Click(object sender, System.EventArgs e)
{
//filtrar os ficheiros TXT ou Rtf
cdAbrir.Filter = "Ficheiros TXT|*.TXT|Ficheiros RTF|*.RTF|Todos os
Ficheiros|*.*";
//mostrar o titulo
cdAbrir.Title = "Selecione um ficheiro para abrir";
if (cdAbrir.ShowDialog() == DialogResult.OK)
{
//obter o nome do ficheiro que deseja abrir...
string ficheiro = cdAbrir.FileName;
//carregar o ficheiro na Rich Text Box
if (System.IO.Path.GetExtension(ficheiro).ToUpper() == ".TXT")
this.rtbficheiro.LoadFile(ficheiro,RichTextBoxStreamType.PlainText);
else
this.rtbficheiro.LoadFile(ficheiro);
}
}
Save File Dialog
Este componente mostra ao usuário uma caixa de diálogo que o possibilita escolher o caminho e
o nome do ficheiro a guardar.
8. - 8 -
Depois de se adicionar à form o componente Savefiledialog e se dar o nome cdGuardar, passa-se
para o código do botão Guardar no menu ficheiro.
private void Guardar_Click(object sender, System.EventArgs e)
{
//mostrar o titulo
cdGuardar.Title = "Guardar Ficheiros como:";
//filtrar o ficheiros txt ou rtf
cdGuardar.Filter = "Ficheiros TXT|*.TXT|Ficheiros RTF|*.RTF";
if (cdGuardar.ShowDialog() == DialogResult.OK)
{
//se escolher a primeira opção da combobox filter
if (cdGuardar.FilterIndex == 1)
//guardar o ficheiro com a extensão TXT
this.rtbficheiro.SaveFile(cdGuardar.FileName,RichTextBoxStreamType.Pla
inText);
//caso a seja escolhida a segunda opção
else if (cdGuardar.FilterIndex == 2)
//guardar o ficheiro com a extensão RTF
this.rtbficheiro.SaveFile(cdGuardar.FileName,RichTextBoxStreamType.RichText)
;
MessageBox.Show("Ficheiro Guardado com sucesso");
}
}
Font Dialog
Com este componente poderemos mudar o tipo e o tamanho de letra da nossa rich text box.
9. - 9 -
No menu Font implementamos o seguinte código:
private void Font_Click(object sender, System.EventArgs e)
{
this.cdFont.ShowDialog();
this.rtbficheiro.Font = this.cdFont.Font;
}
Color Dialog
Com este componente mudamos a cor do texto da nossa rich text box.
private void menuItem16_Click(object sender, System.EventArgs e)
{
this.colorDialog1.ShowDialog();
this.rtbficheiro.SelectionColor = this.colorDialog1.Color;
}
10. - 10 -
Toolbar
Uma Toolbar serve para agrupar um conjunto de botões. Vamos ver como se adiciona uma
Toolbar a uma form, com imagens nos seus botões.
Arrasta-se o componente Toolbar para a form. De seguida, da Toolbox adiciona-se uma
ImageList à form, e nas suas propriedades temos a possibilidade de adicionar imagens à ImageList
Clicamos agora em (Collection) para aparecer o editor da Image Collection. Usamos o Add para
adicionar uma imagem à ImageList. Adicionei 3 imagens para as acções Guardar, Abrir, e Retroceder.
11. - 11 -
Na propriedade ImageList da toolbar adicionamos a nossa ImageList, que neste caso se chama
Imagens.
Agora vamos à propriedade Buttons, que nos permite adicionar e remover botões à toolbar,
abrimos o seu editor e adicionamos 3 botões, Abrir, Guardar e Retroceder. Para cada botão definimos
uma imagem na ImageList, que agora estão disponíveis, pois foram introduzidas anteriormente na
ImageList, e mudamos o Text para o nome de cada botão.
12. - 12 -
A toolbar está completa e ficou com a seguinte apresentação:
Por último o código para cada um dos botões processa-se da seguinte forma:
13. - 13 -
private void toolBar1_ButtonClick(object sender,
System.Windows.Forms.ToolBarButtonClickEventArgs e)
{
//executa a opção escolhida
switch (toolBar1.Buttons.IndexOf(e.Button))
{
case 0:
MessageBox.Show("Clicou no botão abrir");
break;
case 1:
MessageBox.Show("Clicou no botão guardar");
break;
case 2:
MessageBox.Show("Clicou no botão Sair");
break;
}
}
StatusBar
A statusbar é usada para mostrar o estado de algumas funcionalidades da aplicação. Podemos
adicionar quantos painéis quisermos a uma statusbar para mostrar diferentes tipos de informação.
Na toolbox arrastamos o componente statusbar para a form, e damos o nome de BarradeEstado.
No caso de querermos mostrar em baixo a acção que executamos, como por exemplo quando
carregamos no botão Adicionar, aparecer na barra de estado um “Pessoa Adicionada”. Para isso temos
de no botão adicionar colocar o código:
this.BarradeEstado.Text = "Pessoa Adicionada";
14. - 14 -
Na statusbar temos a possibilidade de criar painéis, para isso temos de ir à propriedade da
statusbar e por o ShowPanels a true. Abrimos de seguida em Panel o StatusbarPanel Collection editor
e adicionamos 2 panels, sendo o segundo alinhado à direita e aumentado a largura para 170.
O primeiro panel será para texto já antes feito e o segundo para apresentar a data e hora.
No botão Adicionar agora o código será o seguinte:
this.BarradeEstado.Panels[0].Text = "Pessoa Adicionada";
15. - 15 -
Arrastamos para o form o componente Timer e nas suas propriedades pomos o Enable a true.
Nos eventos clicamos duas vezes no Tick e colocamos o seguinte código:
private void timer1_Tick(object sender, System.EventArgs e)
{
this.BarradeEstado.Panels[1].Text = DateTime.Now.ToString();
}
Conclusão
Com este trabalho acabei por estudar e relembrar um pouco mais sobre este tema, o que foi
bastante positivo.
Na preparação do trabalho tive muita dificuldade em arranjar material na net, e mais informação
para além da que já tinha sido dada nas aulas, pois queria poder explorar um pouco mais os temas que
aqui foram falados, mas acho que o essencial foi dito e tentei-o explicar da melhor maneira.
Sílvia Manuela Astorga Vieira