Passando parâmetros para uma aplicação .Net

Pessoal, seguindo com os posts sobre C# básico, vou mostrar como passar parâmetros para uma aplicação em .Net usando C# em um Windows Forms.

Primeiramente crie uma aplicação Windows Forms:

image

Eu estou usando o Visual Studio 2010 e o Framework 4, mas você pode usar qualquer versão do Visual Studio para executar este exemplo.

Após criar a aplicação vamos ao arquivo Program.cs, onde vamos colocar a variável que irá receber os parâmetros:

   1: [STAThread]

   2: static void Main(string[] parametros)

   3: {

   4:     Application.EnableVisualStyles();

   5:     Application.SetCompatibleTextRenderingDefault(false);

   6:     Application.Run(new frmPrincipal());

   7: }


Neste exemplo eu criei uma variável chamada parametros que irá receber os argumentos da linha de comando. Se você precisa usar o parâmetro somente para acionar alguma parte do seu programa, pode fazer assim:

   1: static void Main(string[] parametros)

   2: {

   3:     if(parametros.Length > 0)

   4:     {

   5:         if(parametros[0].ToUpper() == "/CONFIG")

   6:         {

   7:             frmConfig config = new frmConfig();

   8:             config.ShowDialog();

   9:             Application.Exit();

  10:             return;

  11:         }

  12:     }


Primeiro você testa se recebeu algum parâmetro e depois faz a verificação. Eu fiz a conversão para Upper() fica mais simples a verificação. Agora você pode estar se perguntando, como vou fazer debug da aplicação e passar o parâmetro ? Isto você pode configurar na janela de propriedades do projeto em Project/Properties/Debug:

image 

Se você precisar testar mais de um parâmetro ao mesmo tempo, basta colocá-los separados por espaços, do mesmo modo que faria no prompt de comandos. Agora para finalizar, vou mostrar como passar o parâmetro para o form principal da aplicação. Para isto teremos que modificar o construtor do form, veja:

   1: public partial class frmPrincipal : Form

   2:     {

   3:         public frmPrincipal(string[] parametros)

   4:         {

   5:             InitializeComponent();

   6:         }

   7:     }


Na verdade acrescentamos o parâmetro no construtor do form, mas se você precisar passar qualquer outra informação, basta modificar o construtor. Agora vamos voltar no program.cs e passar o parâmetro:

   1: Application.Run(new frmPrincipal(parametros));


É isto aí pessoal, um abraço e até a próxima.

Carlos dos Santos

8 Comments


  1. Muito obrigado, já procurei muito por isto e não havia encontrado.

    Reply

  2. Carlos, agora quando eu executo o programa como passar o parametro para ele, fora do debug estou falando quando chamo o exe como eu paso o parametro para ele?

    Reply

    1. Passe os parâmetros logo após o nome do programa, separando por um espaço, por exemplo:

      MeuPrograma.exe parametro1 parametro2

      []s,
      Carlos.

      Reply

  3. Muito obrigado, ajudou bastante.

    Reply

  4. Eu não consegui fazer funcionar, está dando o seguinte erro:
    Não é possível acessar um objeto descartado.
    Nome do objeto: ‘frmPrincipal’.

    An unhandled exception of type ‘System.ObjectDisposedException’ occurred in System.Windows.Forms.dll

    Reply

    1. No exemplo existe um formulário chamado frmPrincipal. Você tem este formulário ?

      Reply

      1. Carlos, eu tenho sim … meu form principal chama-se: frmPrincipal.
        no Program.cs eu só preciso fazer isso né?

        static class Program
        {
        [STAThread]
        static void Main(string[] parametros)
        {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new frmPrincipal(parametros));
        }
        }

        e no meu form eu fiz isso:

        public frmPrincipal(string[] parametros)
        {
        InitializeComponent();
        btnBackup_Click(this, new EventArgs());
        }

        Está certo?

        Reply

        1. Olha, seu código está meio estranho, pois tem uma chamada de botão no construtor da classe.

          O artigo explica como receber o parâmetro no main(), dentro da aplicação existem centenas de maneiras de tratar isto.

          Eu trataria os parâmetros diretamente no program.cs, mas como disse, cada caso é um caso.

          Carlos.

          Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

This blog is kept spam free by WP-SpamFree.