- 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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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

Interfaces windows em c sharp

  • 1.
    - 1 - InterfacesWindows 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 Passandopara 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 - Pararesolver 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 - Nopanel 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 - Controlosde 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 - privatevoid 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 - Depoisde 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 - Nomenu 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 UmaToolbar 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 - Napropriedade 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 - Atoolbar 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 - privatevoid 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 - Nastatusbar 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 - Arrastamospara 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