Usuário com melhor resposta
Dúvida em Subrotina

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.
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!
- Sugerido como Resposta Mariano1776 quarta-feira, 28 de fevereiro de 2018 20:05
- Marcado como Resposta Filipe B CastroModerator quarta-feira, 28 de fevereiro de 2018 20:58
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!
- Sugerido como Resposta Mariano1776 quarta-feira, 28 de fevereiro de 2018 20:05
- Marcado como Resposta Filipe B CastroModerator quarta-feira, 28 de fevereiro de 2018 20:58
-
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.
-
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!
-