none
Teclado en pantalla - > user control RRS feed

  • Pregunta

  •  Como hago para pasar un string generado por el usercontrol "A" a un usercontrol "B", ambos contenidos en el mismo Form.

    Dejo como ejemplo ina imagen de lo que estoy buscando hacer. 

    Creo que mi mayor problema es que no logro hacer foco en el Textbox "A" del usercontrol1...

    Alguna ayuda? 

    lunes, 27 de julio de 2015 14:43

Todas las respuestas

  • Tienes que hacer lo siguiente:

    1. En ambos controles una propiedad para que puedas asignar el valor desde afuera del control.

     

     public string texto
     {
    get { return textBox1.Text; }
            set { textBox1.Text = value; }
     }

    En el control2 es necesario crear un evento y este evento se disparara cuando cambie el valor del textbox sobre el que escribe el techado algo asi

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Drawing;
    using System.Data;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;

    namespace WindowsFormsApplication2
    {
        public partial class UserControl1 : UserControl
        {
            public delegate void EventHandler();
            public event EventHandler Changed;
            public string texto 
            {
                get { 
                            return textBox1.Text;
                }
                set { textBox1.Text = value;
                }
            }
            public UserControl1()
            {
                InitializeComponent();
            }

            private void UserControl1_Load(object sender, EventArgs e)
            {

            }

            private void textBox1_TextChanged(object sender, EventArgs e)
            {
                EventHandler tmp = Changed;
                if (tmp != null)
                {
                    Changed();
                }
            }
        }
    }

    Por ultimo en tu forma principal, necesitas declarar este evento y asignar un dato de un control a otro.

                

      public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
                userControl11.Changed += userControl11_Changed;
            }



            void userControl11_Changed()
            {
                userControl21.texto = userControl11.texto;
            }


        }

    Quedo a tus ordenes, saludos


    Ing. Carlos Monroy MCP, MCAD, MCSD, MCTS

    lunes, 27 de julio de 2015 15:42
  • Hola Carlos, en el caso de agregar otro textboen el usercontrol1, y agregar otro user control; podré trabajar con elmismo user control 3 para éstos dos?

    Agrego una imagen con la idea.

    Muchas gracias!

    PD: Usted usa un " public string texto " , es correcto aplicar de esa manera? pregunto porque siempre le tuve miedo a usar variables que sean públicas. 

    jueves, 30 de julio de 2015 17:37
  • Lo que hice en el código fue permitir que los datos pasen de un control a otro, y esto se puede replicar a tantos controles tengas.

    Respecto a los modificadores de acceso, si quieres restringir para que solo se lea desde tu aplicación, puedes ponerla como internal.

    Úsalos para limitar el acceso a los componentes del código

    Lee esto

    https://msdn.microsoft.com/en-us/library/ms173121.aspx?f=255&MSPPError=-2147217396

    No es malo usar public, en muchos casos te permite el rehusó de código, pero como toda aplicación tiene que nacer tu diseño desde la seguridad de la misma, en donde se va a usar, para que, y eso te ayuda a establecer los modificadores de acceso a tus clases.

    Todo depende de tu aplicación en especifico

    saludos


    Ing. Carlos Monroy MCP, MCAD, MCSD, MCTS

    jueves, 30 de julio de 2015 20:10