none
Chamar outra classe pelo Form RRS feed

  • Pergunta

  • Boa tarde,

    Pessoal, alguém sabe me dizer o que está errado aqui? Estou tentando encapsular os controles de um form conforme abaixo:

    Tenho um form (name: Form1) e um controle (label1)

    Eu criei uma nova classe (abaixo) para acessar o controle label, mudando seu text para "Hello";

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    namespace TesteControlesForm
    {
        class ControleFormClass
        {
            public void MetodoX(Form1 form)
            {
                form.label1.Text = "Hello";
            }
        }
    }

    No form, eu estou tentando chamar esta classe conforme abaixo:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    namespace TesteControlesForm
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
                chamaMetodo();
            }
            public void chamaMetodo()
            {
                ControleFormClass controle = new ControleFormClass();
                controle.MetodoX();
            }
        }
    }

    Quando vou testar, dá a seguinte mensagem de erro:

    "There is no argument given that corresponds to the required formal parameter 'form' of 'ControleFormClass.MetodoX(Form1)'"

    e eu não consegui entender essa mensagem até agora. Alguém consegue me dar um apoio?

    Agradeço muito,

    Abs,

    Rafael Leonardo

    sábado, 31 de dezembro de 2016 15:15

Respostas

  • vê se ajuda,

    https://social.msdn.microsoft.com/Forums/vstudio/pt-BR/8bab287f-5024-4532-a872-ccd7350e1fc8/alterar-o-texto-de-uma-label-atravs-de-uma-classe-externa?forum=504

    https://social.msdn.microsoft.com/Forums/vstudio/pt-BR/76f6911b-ded6-45b2-8973-1f256098d186/alterar-label-atraves-de-classes-c?forum=504


    Alexandre Maranhão amprog@outlook.com

    sábado, 31 de dezembro de 2016 16:53

Todas as Respostas

  • blz

    Rafael Leonardo M A,

    tem uma forma mais fácil de fazer isso

    criando um método publico na área de código do próprio form1 sem a necessidade de outra classe,

    ai chama esse método no construtor e o texto do label já altera.

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
                chamaMetodo();
               
            }
    
    
            public void chamaMetodo()
            {
                label1.Text = "Hello";
            }
    
      
        }
    }
    



    Alexandre Maranhão amprog@outlook.com

    sábado, 31 de dezembro de 2016 16:14
  • só completando,

    para que você utilize uma classe em outro local deixe como publica e

    também quando você chama a label nessa nova classe dessa maneira que esta sendo feito

    a nova classe não enxerga a label, nesse ponto não dá nenhum erro ai no seu código ?


    Alexandre Maranhão amprog@outlook.com


    sábado, 31 de dezembro de 2016 16:21
  • Olá Alexandre,

    Obrigado pela resposta. Eu a entendi, mas e do jeito mais difícil, ou seja, como faço para que ocorra via classe externa (fora do próprio form)?

    Abs,

    Rafael Leonardo

    sábado, 31 de dezembro de 2016 16:36
  • vê se ajuda,

    https://social.msdn.microsoft.com/Forums/vstudio/pt-BR/8bab287f-5024-4532-a872-ccd7350e1fc8/alterar-o-texto-de-uma-label-atravs-de-uma-classe-externa?forum=504

    https://social.msdn.microsoft.com/Forums/vstudio/pt-BR/76f6911b-ded6-45b2-8973-1f256098d186/alterar-label-atraves-de-classes-c?forum=504


    Alexandre Maranhão amprog@outlook.com

    sábado, 31 de dezembro de 2016 16:53
  • Boa tarde Alexandre,

    Muito obrigado, ajudou muito!

    Grande abraço!

    Rafael Leonardo

    segunda-feira, 2 de janeiro de 2017 14:17