|
||
|
|
Conheça o Plugfeed | » Início » Programação » Criando um formulário base para aplicações Windows Form
Conheça o Plugfeed | » Início » Programação » Criando um formulário base para aplicações Windows Form
--> |
|
Avaliação:
![]() ![]() ![]() ![]() | Publicado em: 04/09/2005Criando um formulário base para aplicações Windows Form
Francisco Rodrigues Graduando em Sistemas de Informação na UNIT e formado pelo NPOR. Atua há dois anos e meio na área de desenvolvimento de sistemas na plataforma .NET (WEB e MOBILE) através do desenvolvimento de soluções para as empresas do Grupo Constâncio Vieira.
Criando um formulário base para aplicações Windows Form
Olá pessoal! Dando seqüência ao primeiro artigo (personalizando uma toolbar ), tentarei mostrar como o uso correto de herança de formulário (utilização da orientação a objeto) nos faz reduzir alguns cliques no mouse e alguns “CTRL+ C” e “CTRL+V”. Desenvolverei um projeto Windows Form contendo um formulário base, responsável por todos os atributos comportamentos que minha aplicação deverá possuir, e outro formulário que corresponde à minha aplicação de teste propriamente dita. Recomendo este artigo para quem está iniciando no desenvolvimento Windows Form. Codificando... A princípio, criaremos uma solução contendo um projeto Windows Application. Chamarei de AppArt02Teste , já que essa será nossa aplicação para testar o resultado. Altere o nome do formulário criado para frmMain (irei detalhar os itens do controle deste formulário a seguir). Adicionaremos também à nossa solução, o projeto do primeiro artigo ( Controles.csproj ). Nele iremos adicionar a nossa classe base (formulário base). Para isso selecione o projeto e no menu selecione a opção Add > Add Windows Form... O nome do meu formulário será frmBase . Ilustração 1 - Adicionando formulário base Defina um tamanho médio que você achar que será padrão para todas as suas aplicações. Altere também as seguintes propriedades:
Após redefinir as propriedades, vá até a ToolBox e adicione o componente ToolTip. Este componente é o responsável pela exibição dos hints dos componentes. Mude o nome da ToolTip inserida de toolTip1 para toolTip e o valor da propriedade Modifiers para Protected. A diferença de Protected para Protected Internal é que a primeira possibilita a visualização (uso) quando fazemos herança entre classes de DLL diferentes. Indo até o código do formulário, adicione os métodos que você acha que poderá ser útil para todas as telas (códigos para tratamento de erros, exibição de tela, criação e chamada de formulários etc.). Neste exemplo irei adicionar um método que irá tratar um erro para o usuário e criação de janelas de perguntas e de mensagens conforme código abaixo. #region Mensagens protected void ExibirMsgConfirmacao() { MessageBox.Show(RetornarMensagem(eTipoMensagem.OperacaoExecutada), "" ,System.Windows.Forms.MessageBoxButtons.OK,MessageBoxIcon.Asterisk); protected void ExibirMsg( eTipoMensagem peTipoMensagem ) { ExibirMsg( RetornarMensagem( peTipoMensagem ) ); protected void ExibirMsg( string pMsg ) { MessageBox.Show( this ,pMsg, "Mensagem:" ,System.Windows.Forms.MessageBoxButtons.OK, MessageBoxIcon.Information); protected void ExibirErro( Exception Erro ) { MessageBox.Show( this , Erro.Message, "Erro:" ,System.Windows.Forms.MessageBoxButtons.OK, protected DialogResult ExibirPergunta( string pPergunta ) { return MessageBox.Show( this , pPergunta, "Pergunta?" ,MessageBoxButtons.OKCancel, MessageBoxIcon.Question ); protected DialogResult ExibirPergunta( eTipoMensagem peTipoMensagem ) { return MessageBox.Show( this ,RetornarMensagem (peTipoMensagem), "Pergunta:" , MessageBoxButtons.OKCancel, MessageBoxIcon.Question ); protected string RetornarMensagem( eTipoMensagem peTipoMensagem ) { switch ( peTipoMensagem ) { case eTipoMensagem.Alterar: return "Deseja alterar o item selecionado?" ; case eTipoMensagem.Cadastrar: return "Deseja cadastrar o item selecionado?" ; case eTipoMensagem.Excluir: return "Deseja excluir o item selecionado?" ; case eTipoMensagem.SelecioneItem: return "Selecione um item." ; case eTipoMensagem.OperacaoExecutada: return "Operação executada com sucesso!" ; case eTipoMensagem.OperacaoAbortada: return "A operação foi abortada." ; default : return "" ; #endregion Mensagens public enum eTipoMensagem { Cadastrar = 0, Alterar = 1, Excluir = 2, SelecioneItem = 4, OperacaoExecutada = 8, OperacaoAbortada = 16 Perceba que os métodos são protegidos, ou seja, só serão vistos se o escopo de utilização for igual ao do método ou se a classe for herdada. Compile para que a DLL do controle possa ser gerada e/ou atualizada. Na seqüência, alterar o nosso formulário base. Para isso adicione a referência do controle criado no projeto de aplicação de teste, e selecione o formulário criado no projeto de teste e adicione dois botões e um label. Os componentes terão as seguintes configurações:
No evento OnClick do botão “Gerar Erro”, adicione o código abaixo que irá provocar private void btnErro_Click( object sender, System.EventArgs e){ try { //Gera um erro qualquer throw new ApplicationException( "Erro causado ao clicar no botão para gerar erro!" ); catch ( Exception Erro ){ //Chama o método da classe base. ExibirErro( Erro ); E para o evento do botão pergunta, private void btnPergunta_Click( object sender, System.EventArgs e) { try { //Exibe dialogo com a pergunta if ( ExibirPergunta( "Já visitou o site PlugMasters?" ) == DialogResult.OK ){ lblResultado.Text = "Obrigado pela visita efetuada e continue visitando! \nhttp://www.plugmasters.com.br/" ; else { lblResultado.Text = "Não perca tempo pesquisando! Visite http://www.plugmasters.com.br/ e ache o que você deseja!" ; catch ( Exception Erro ) { ExibirErro ( Erro ); Compile e execute para ver o resultado. Conclusão Perceba que ao fazer a herança do formulário base, você teve acesso aos métodos definidos nela como também aos objetos nela contido e que são visíveis para a herança (controle que exibe o hint por exemplo). Utilizando essa estruturação de código, reduzimos e muito o copiar e colar, facilitando a manutenção ou a publicação de novos objetos. Sugestões- Criar novos métodos e personalizar ainda mais os métodos existentes; Faça o download do arquivo fonte deste artigo logo abaixo. Por hoje fico por aqui. Abraços! Arquivos anexos ao artigo
Vagner <vagnervic@gmail.com>
Olá Francisco.
Eu estou utilizando este recurso em um projeto. Mais a dificuldade é para alguns controles que uso, como menustrip, toolstrip. Se eu deixar a prop. Modifier como Protected.. não consigo inserir métodos nos forms q herdarão estas caracteristicas...Tem alguma idéia do que pode ser isto?? Obrigado. ![]() ![]() ![]() ![]() ![]() ![]() |
|
|