You are on page 1of 42

Programao em C# com Visual Studio .

NET

Prof. Eder Samaniego Villalba

Avanando WinForms

WinForms uma coleo de classes e tipos que encapsulam e estendem a API win32 em um modelo de objetos organizados. Os componentes usados para criar aplicaes GUI do Windows so fornecidos como classes .NET e disponibilizados por herana.

Programao em C#

Avanando WinForms

Os forms so tipos de interface Windows e podem ser os seguintes:

MDI (Multiple Document Interface) suporta

mltiplos documentos abertos simultaneamente SDI (Single Document Interface) permite a abertura de apenas um documento de cada vez. permitem que o usurio trabalhe com eles e faa algo em outro form com ele ainda ativo.

Dentro de SDIs:

Forms normais:

Programao em C#

Avanando WinForms

Forms modais:

no permitem que se faa nada dentro do sistema, exceto manipular o form ativo.

Os sistemas comerciais em sua grande maioria so SDI.

Programao em C#

Um Exemplo MDI

Windows Application com os seguintes elementos:

O form principal (MainForm) Os forms filhos O menu do form principal

Programao em C#

Um Exemplo MDI

Form principal (MainForm)

Name: MainForm IsMdiContainer: true Text: Formulrio Principal

Adicione o menu ao form principal.

Arquivo submenus: Novo, Fechar e Sair Janela submenus: Horizontal, Vertical e Cascata

Programao em C#

Um Exemplo MDI

Form filho

No solution explorer, clique no nome do projeto com


o boto esquerdo e em Add/New Item

Name: formSon

Selecione Windows Forms

Crie uma varivel do tipo inteiro privada para armazenar a quantidade de forms filhos criados dinamicamente.

private int formCount = 1;

Programao em C#

Um Exemplo MDI

Clique no item de menu Novo e insira o seguinte cdigo que criar nossos forms filhos:

Programao em C#

Um Exemplo MDI

Para fechar os forms, clique no submenu fechar e insira o seguinte cdigo:

Programao em C#

10

Um Exemplo MDI

Para organizar as janelas:

Programao em C#

11

O Projeto SDI

Crie um Windows Application Renomeie o form para mainForm. Insira um componente menu:

Arquivo Verde, Azul e Fechar.

Adicione 2 novos forms. Renomeie-os para frmVerde e frmAzul. Altere a cor de fundo para a cor de batismo.

Programao em C#

12

O Projeto SDI

Programao em C#

13

O Projeto SDI

Show() no deixa o foco fixo no formulrio criado. ShowDialog() o foco somente no formulrio criado, no podendo fazer mais nada at fech-lo.

Programao em C#

14

Melhorando o Projeto SDI

Insira mais um elemento amarelo (menu e form) Vamos generalizar para no haver repetio de cdigo.

Programao em C#

15

Melhorando o Projeto SDI

Programao em C#

16

Passando Valores entre Forms


O form chamador deve sempre conter o valor a ser passado. Imagine que uma rotina ser implementada no frmAmarelo quando o mainForm o chamar. Depois notamos que o frmAzul tambm chamar o frmAmarelo. Se a rotina est no frmAmarelo teremos que acrescentar um if para ver se quem chamou o Amarelo foi o mainForm.
Programao em C#

17

Passando Valores entre Forms

Imagine a situao que voc tem vrios forms chamando outros e precisar de vrios ifs para saber quem chamou quem. Portanto, para passar valor entre forms mais aconselhvel deixar o valor ou rotina no form chamador. Continue o exerccio anterior colocando um label em cada um dos forms coloridos

Programao em C#

18

Passando Valores entre Forms

A idia que este label apresente na sua propriedade Text quem o invocou. Deixe todos os labels com o mesmo nome. Insira 2 botes em cada um dos forms coloridos para chamar os outros forms coloridos. Coloque no Text dos botes a cor do form a ser chamado.
Programao em C#

19

Passando Valores entre Forms

Programao em C#

20

Passando Valores entre Forms

Alterar a chamada dos forms coloridos no mainForm. Alterar o modificador dos labels para public. Inserir o seguinte cdigo:

Programao em C#

21

Propriedades Mais Comuns de um Form

AcceptButton

Determina que um boto do form clicado quando a


tecla Enter pressionada.

AllowDrop

Determina se o form aceita drag-n-drop messages.

AutoScale
fonte.

Determina se o form pode escalar dependendo da

Programao em C#

22

Propriedades Mais Comuns de um Form

AutoScroll

Habilita barra de rolagem se algum componente


estiver em algum lugar no visvel do form.

BackColor e ForeColor BackgoundImage

Determina as cores do form.

Determina uma imagem como background no form.

Programao em C#

23

Propriedades Mais Comuns de um Form

CancelButton

Determina que um boto do form ciclado quando a


tecla Esc pressionada.

ControlBox, MazimixeB
form.

Maximizar, minimizar, fechar e help no captio do

FormBorderStyle

Especifica como a borda do form ser apresentada.


Programao em C#

24

Propriedades Mais Comuns de um Form

IsMdiContainer
Language Locked

Determina se o form um MDIContainer ou no.

Determina a linguagem do form.


Habilita a habilidade de mover e redesenhar
componentes do form.

Programao em C#

25

Propriedades Mais Comuns de um Form

Opacity

Habilita a transparncia do form. 0% transparente


e 100% opaco.

ShowInTaskBar Size

Habilita mostrar o form na TaskBar do Windows.

Determina as dimenses iniciais do form.

Programao em C#

26

Propriedades Mais Comuns de um Form

StartPosition
Text

Posio inicial do form na rea de trabalho.

Texto que ser mostrado na caption bar.


o estado inicial da janela (minimizado, normal ou
maximizado).

Window State

Programao em C#

27

Componentes Dinmicos

Adicionar componentes durante a execuo de um programa pode muitas vezes ser til. No s componentes, mas tambm eventos e delegaes. Suponha um projeto Windows Application e que desejamos inserir um novo boto a partir de um clique no form com o boto esquerdo.

Programao em C#

28

Componentes Dinmicos

Programao em C#

29

Componentes Dinmicos

Programao em C#

30

Componentes Dinmicos

Para criarmos eventos de forma dinmica precisamos fazer a assinatura do evento, ou seja, fornecer o cdigo que ser executado quando um evento gerado no formato idntico ao manipulador de eventos. A assinatura faz parte da definio do evento e especificada por uma delegao (delagation). Delegation um handle para uma funo em memria.

Programao em C#

31

Componentes Dinmicos

Algo como tipos por referncia porm ao invs de conter valores para variveis, contm um endereo de uma funo. Vamos criar uma calculadora em que todos os seus botes e eventos Click sero criados dinamicamente. Crie um projeto Windows Application e coloque apenas um TextBox prximo ao topo.

Programao em C#

32

Componentes Dinmicos

Name = tbDisplay. BorderStyle = none Enabled = false Text = 0 Vamos inicialmente declarar as variveis que vamos utilizar:

Programao em C#

33

Componentes Dinmicos

O prximo passo criar a rotina que vai gerar, denominar e mostrar os botes no form.

Programao em C#

34

Componentes Dinmicos

Programao em C#

35

Componentes Dinmicos

Devemos agora inserir os eventos de Click em cada um dos botes. Adicione o cdigo abaixo no mtodo AdicioneBotoes.

Programao em C#

36

Componentes Dinmicos

Programao em C#

37

Componentes Dinmicos

O objeto usado para gerar eventos uma instncia da classe System.EventHandler. Ao escrever a funo disparada pelo evento, como ClickNumero, devemos nos preocupar com que a assinatura da funo seja idntica delegao padro do .NET para o evento Click.

Programao em C#

38

Componentes Dinmicos

Os valores sero acumulados na varivel Valor1 at que um operador seja clicado. Ento o tipo de operador armazenado e os prximos valores lanados so colocados no Valor2. Ao clicar em =, o operador armazenado no TipoOperador resgatado para podermos fazer a operao em si. O valor resultado volta para o Valor1 que ento impresso na tela.
Programao em C#

39

Componentes Dinmicos

Programao em C#

40

Componentes Dinmicos

Programao em C#

41

Componentes Dinmicos

Programao em C#

42