• Martes 21 de Abril de 2026, 06:56

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - megapunto

Páginas: [1]
1
C# / Re: GENERAR INSTANCIA A PARTIR DE TEXTO DE UN COMBOBOX
« en: Miércoles 16 de Marzo de 2011, 07:23 »
Gabio2, realmente no estaba preguntando la forma de introducir todos los nombres de los formularios en un combo, pues lo iba a hacer en forma manual, pero gracias a tu intervención, ahora será automático, lo cual es de mucha utilidad y me ahorra estar modificando manualmente el combo cuando tenga un formulario nuevo.  Así que muchas gracias por eso

En cuanto a la segunda parte del problema, ya lo encontré y les paso a todos la solución:

Utilizando:
using System.Reflection;

En primer lugar creamos una función que luciría como  lo siguiente:

        private Form GetForm(string formName)
        {
           
            System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
            foreach (Type type in assembly.GetTypes())
            {
                if (type.Name.Equals(formName))
                    return assembly.CreateInstance(type.FullName) as Form;
            }
            return null;
        }

Y luego la utilizamos:

        private void button5_Click(object sender, EventArgs e)
        {
            string vNombreFormularioEnTexto;
            vNombreFormularioEnTexto = "frmPTesoreria";

            Form objFormulario = GetForm(vNombreFormularioEnTexto);
 
            int vBotones = 0, vTextBox = 0, vPictureBox = 0;
            foreach (Control v_Control in objFormulario.Controls)
            {
                if (v_Control is Button)
                {
                    v_Control.Text = vBotones.ToString();
                    vBotones += 1;
                }
                else if (v_Control is TextBox)
                    vTextBox += 1;
                else if (v_Control is PictureBox)
                    vPictureBox += 1;
            }            
        }

La idea, y es lo que haré ahora, será asignar a la variable string: vNombreFormularioEnTexto, el valor del formulario que yo seleccione en el ComboBox.

De nuevo muchas gracias Gabio2 por tu gran ayuda.

2
C# / GENERAR INSTANCIA A PARTIR DE TEXTO DE UN COMBOBOX
« en: Domingo 13 de Marzo de 2011, 09:14 »
Saludos a todos!!!!

Tengo un botón (button5) que está en el formulario principal de mi aplicación, al presionarlo recorre todos los controles del formulario y me dice cuantos controles hay de los tipos TextBox, PictureBox y Button.  Lo hice así a nivel de ejemplo, pero realmente me interesa saber que controles hay para usar eso para algo más profundo.


       private void button5_Click(object sender, EventArgs e)
        {          
 
            int vBotones = 0, vTextBox = 0, vPictureBox = 0;
            foreach (Control v_Control in this.Controls)
            {
                if (v_Control is Button)
                {
                    v_Control.Text = vBotones.ToString();
                    vBotones += 1;
                }
                else if (v_Control is TextBox)
                    vTextBox += 1;
                else if (v_Control is PictureBox)
                    vPictureBox += 1;
            }

        }

Lo anterior me funciona sin problemas, sin embargo, lo que deseo es tener en el formulario un ComboBox con los nombres de todos los formularios de mi aplicación.  Por ejemplo frmVentas, frmClientes, frmPedidos, etc.  y luego en la linea del código anterior:

            foreach (Control v_Control in this.Controls)

yo poder cambiar this por el nombre del formulario que yo seleccione en el ComboBox y que me de la información de los controles del formulario que seleccione en el ComboBox.

Si yo creo una instancia de cada formulario, por ejemplo:

frmClientes instClientes = new frmClientes();

y luego en la linea pongo lo siguiente:

            foreach (Control v_Control in instClienes.Controls)

me trabaja bien y me da los controles del formulario frmClientes, lo que yo quería era ver si existía una forma de solo tener la linea:

            foreach (Control v_Control in XXXX.Controls)

y de alguna forma poner en XXXX la instancia del formulario que seleccione en el ComboBox.  Es decir, convertir el texto del ComboBox en una instancia válida para pasarla a una variable XXXX.

Espero no haber sido muy complicada mi explicación.  He probado con muchos códigos, pero no consigo lo que deseo, aunque hace años cuando programaba en visual basic 6 si lo logré.

Espero que alguien pueda ayudarme.

Páginas: [1]