Re: Array de controles??????

15/05/2005 - 20:40 por jebado | Informe spam
Tengo 6 ComboBox en Form1 y en cada uno de ellos tengo que tener la opcion de posibilitar al usuario a añadir un nuevo Item a través del Item preestablecido "AÑADIR"
Cuando hago click en este item me aparece un formulario con un TXT (TxtAñadir) y un BOTON (BtnAñadir)
En el Form1

Private Sub CmbArray_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged, ComboBox2.SelectedIndexChanged, ComboBox3.SelectedIndexChanged, ComboBox4.SelectedIndexChanged, ComboBox5.SelectedIndexChanged, ComboBox6.SelectedIndexChange

Dim FA As New FrmAñadi
Dim combo As ComboBox = DirectCast(sender, ComboBox
Dim c As Contro
For Each c In Me.Control
If c.GetType.Name = "ComboBox" The
FA.Show() 'se visualiza el FrmAñadi
End I
Nex
End Su

Hasta ahí perfecto, pero cómo hago para saber qué Combo he pulsado en Form1 para que desde FrmAñadir se añada el valor de la caja de texto (TxtAñadir) con el evento click del botón (BtnAñadir)

jebado

Ver este tema: http://www.softwaremix.net/viewtopic-389085.htm

enviado desde http://www.softwaremix.net

Preguntas similare

Leer las respuestas

#1 Tristan
15/05/2005 - 23:07 | Informe spam
Creo que ya te entiendo mejor. Lo que necesitas es pasar a tu FrmAñadir, una
referencia al combo que produce el evento (Sender).

En FrmAñadir, añades una propiedad, de solo lectura en la que pasas la
referencia al Combo. Puedes hacer lo mismo con menos código, con una
variable pública, pero no es recomendable:

class FrmAñadir
...

private mComboAñadir as ComboBox
WriteOnly property ComboAñadir as ComboBox
set(byval value as combobox)
mComboBox = value
end set
end property
end class

Ya podrás utilizar mComboAñadir en tu click del BtnAñadir.

Tu código de llamada al formulario será:

Private Sub CmbArray_SelectedIndexChanged(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged,
ComboBox2.SelectedIndexChanged, ComboBox3.SelectedIndexChanged,
ComboBox4.SelectedIndexChanged, ComboBox5.SelectedIndexChanged,
ComboBox6.SelectedIndexChanged

Dim FA As New FrmAñadir
FA.ComboAñadir = DirectCast(sender, ComboBox)
FA.Show() 'se visualiza el FrmAñadir
End Sub

Como verás, el bucle For Each no servía para nada.


De todas formas, la forma realmente correcta es plantear las cosas al revés.
En lugar de que FrmAñadir tenga acceso al combo, cosa que no necesita, es
Form1 el que debería tener acceso al texto devuelto por FrmAñadir. De esta
forma la aplicación será más robusta ante los cambios.


Juan Carlos Badiola
MVP - C#
Respuesta Responder a este mensaje
#2 Tristan
15/05/2005 - 23:10 | Informe spam
Perdón, hay un error en el ejemplo que te he dado. FrmAñadir debe ser así:

class FrmAñadir
...

private mComboAñadir as ComboBox
WriteOnly property ComboAñadir as ComboBox
set(byval value as combobox)
mComboAñadir = value
end set
end property
end class

Juan Carlos Badiola
MVP - C#
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida