none
Dúvida em Subrotina RRS feed

  • Pergunta

  • Já fiz muitos programas em várias linguagens, mas nunca trabalhei com software ou hardware que não seja para meu puro aprendizado e nos meus últimos 15 anos eu usava o Delphi para aplicativos de computador ou C++ em hardware de microcontrollers e Arduino. No momento decidi tentar aprender o C#. Vamos lá.

    A minha dúvida eu acredito que é bastante simples e é a seguinte:

    Eu criei um programa padrão no Visual Studio em C# com a criação do “Form1.cs[Design]” e nele eu abri a “Tab” contendo o Form1.cs, tudo dentro do padrão normal.

    No “Form1.cs[Design]” eu coloquei um Botão (button1) e um Label (label1). E abaixo do “InitializeComponent()” eu inicializei o label1 com o valor “12345” e criei também uma condição de rotina para o caso do button1 ser clicado, como mostrado abaixo.

    using System;

    namespace “ProgramForm

    {

        public partial class Form1 : Form

        {

            public Form1()

            {

                InitializeComponent();

                label1.Text = “12345”;

                }

            private void button1_Click(object sender, EventArgs e)

            {

            Test();

            }

        }

    }

    Criei então um outro arquivo “CS” na forma de ‘Code File’ que conteria a subrotina “Test” que ficou da seguinte maneira:

    using System;

    namespace ProgramTest

    {

        class Program

        {

            public static void Test()

            {

                label1.Text = "54321";

            }

        }

    }

    Em Delphi eu apenas precisava colocar o caminho de onde estava a minha subrotina e ele iria desviar e rodar o pedaço de programa lá. Porém, aqui eu estou lendo na Internet há mais de uma semana e já fiz dezenas de experimentos de mudanças de programa e nada funciona.

    Um detalhe, colocar a subrotina no mesmo arquivo “CS” eu já fiz e funciona muito bem, mas o que eu gostaria é de saber como rodar a subrotina em outro arquivo “CS”.

    Assim sendo, recorro a esta comunidade o pedido de ajuda e agradeço antecipadamente as dicas (prefiro de forma mais simples possível) me mostrar o caminho das pedras ou como devo fazer este procedimento.

    Obrigados a todos,

    Albert.

    quarta-feira, 28 de fevereiro de 2018 15:58

Respostas

  • Olá Albert,

    Vamos lá, C# é linguagem de sintaxe orientada a objetos, e resumidamente, significa que devemos seguir os pilares da programação orientada a objeto (herança, encapsulamento abstração e polimorfismo). Mas respondendo a sua pergunta de forma simples, não se prenda ao arquivo ".CS" e sim a "Objetos",  neste contexto vamos criar uma novo "objeto" adicionando uma nova classe no projeto ''.CS" com o nome "Manipulador" ex:

       public class Manipulador
        {
            public void AlterarLabel(System.Windows.Forms.Label label, string texto)
            {
                label.Text = texto;
            }
        }

    Perceba que utilizei o método AlterarLabel para executar sua rotina, assim no evento de click do seu botão eu vou instanciar o meu objeto e chamar a rotina:

        private void button1_Click(object sender, EventArgs e)
    
            {
    
               var meuObjeto = new Manipulador();
                meuObjeto.AlterarLabel(this.label1, "Olá Mundo!");
    
            }

    Espero ter ajudado um pouco na sua caminhada, caso queira esclarecer mais dúvidas sobre POO(programação orientada a objetos) estou à disposição.

    Abraço!

    quarta-feira, 28 de fevereiro de 2018 18:46

Todas as Respostas

  • Olá Albert,

    Vamos lá, C# é linguagem de sintaxe orientada a objetos, e resumidamente, significa que devemos seguir os pilares da programação orientada a objeto (herança, encapsulamento abstração e polimorfismo). Mas respondendo a sua pergunta de forma simples, não se prenda ao arquivo ".CS" e sim a "Objetos",  neste contexto vamos criar uma novo "objeto" adicionando uma nova classe no projeto ''.CS" com o nome "Manipulador" ex:

       public class Manipulador
        {
            public void AlterarLabel(System.Windows.Forms.Label label, string texto)
            {
                label.Text = texto;
            }
        }

    Perceba que utilizei o método AlterarLabel para executar sua rotina, assim no evento de click do seu botão eu vou instanciar o meu objeto e chamar a rotina:

        private void button1_Click(object sender, EventArgs e)
    
            {
    
               var meuObjeto = new Manipulador();
                meuObjeto.AlterarLabel(this.label1, "Olá Mundo!");
    
            }

    Espero ter ajudado um pouco na sua caminhada, caso queira esclarecer mais dúvidas sobre POO(programação orientada a objetos) estou à disposição.

    Abraço!

    quarta-feira, 28 de fevereiro de 2018 18:46
  • Grande Edson,

    Primeiramente, obrigado pela rápida resposta. Se eu tivesse de dar uma nota com absoluta certeza seria DEZ.

    Entendi, apliquei e funcionou perfeitamente e até fiz uma condição a mais que foi colocando dois Labels que ficou da seguinte forma:

    Form1.cs

    private voidButton1_Click(objectsender, EventArgs e)

    {

         varmeuObjeto = newManipulador();

         meuObjeto.AlterarLabel(this.label1, "Olá Mundo!", this.label2, "OK!");

    }

    File2.cs

    public classManipulador

    {

         publicvoidAlterarLabel(System.Windows.Forms.Label label, string texto, System.Windows.Forms.Label label2, stringtexto2) 

         {

                label.Text = texto;

                label2.Text = texto2;

         }

    }

    Nao sei se essa é a maneira mais simples para fazer, mas funcionou perfeitamente.

    Mais uma vez, obrigado pela orientação.

    Albert.

    quarta-feira, 28 de fevereiro de 2018 20:38
  • Olá Albert, obrigado pelo seu feedback.

    Com relação ao seu código seria mais coerente  executar  a rotina novamente, ex:

    private voidButton1_Click(objectsender, EventArgs e)
    
    {
    
         var meuObjeto = newManipulador();
         meuObjeto.AlterarLabel(this.label1, "Olá Mundo!");
         meuObjeto.AlterarLabel(this.label2, "OK!");
    
    
    }
    Um abraço!

    quinta-feira, 1 de março de 2018 17:49
  • Oi Edson,

    Obrigado mais uma vez pela orientação..

    Um forte abraço.

    segunda-feira, 5 de março de 2018 04:41