Re: Array de controles??????

16/05/2005 - 01:41 por jebado | Informe spam
Juan Carlos, un millón de gracias por tu sabia contestación, maestro. Llevaba toda la tarde perdida con la tontería. Pero me doy cuenta que no puedo hacerlo así pues cuando paso el valor del TXTAñadir al Combo del Form1 hace otra llamada al método Show del FormAñadir y aparece otra instancia.El código quedaría así

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 cmb As ComboBo
FA.ComboAñadir = DirectCast(sender, ComboBox
FA.Show() 'se visualiza el FrmAñadi
End Su

FormAñadir
Private mComboAñadir As ComboBo
WriteOnly Property ComboAñadir() As ComboBo
Set(ByVal value As ComboBox
mComboAñadir = valu
End Se
End Propert
Private Sub FrmAñadir_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Loa
TxtAñadir.Focus(
End Su

Private Sub BtnAñadir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnAñadir.Clic

Dim selectedItem As Objec
If mComboAñadir.SelectedItem = "Añadir" The
mComboAñadir.Items.Add(TxtAñadir.Text
mComboAñadir.Text = TxtAñadir.Tex
selectedItem = mComboAñadir.SelectedIte
MessageBox.Show("Se ha añadido: " & selectedItem.ToString()
End I
'aqui añadimos tambien a la BD

Me.Close(

End Su

Dos preguntillas
1. FA.ComboAñadir = DirectCast(sender, ComboBox) > Aquí supongo que mandarás el ComboBox seleccionado a la propiedad ComboAñadir del Form2. ¿Qué es lo que hacae DirectCast, "envía" el sender
2. Si en vez de SENDER envías "e" qué es lo que recibe, el evento SelectedIndexChanged
Voy a mirar tu sabia decisión de codificarlo alrevés: En lugar de que FrmAñadir tenga acceso al combo,Form1 que tenga acceso al texto devuelto por FrmAñ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
16/05/2005 - 12:43 | Informe spam
Lo que no tengo claro es si te ha servido el ejemplo, por que dices lo de que
aparece otra instancia... No me queda claro si te funciona o no.

En cuanto a tus dos preguntas:

1. FA.ComboAñadir = DirectCast(sender, ComboBox) > Aquí supongo que mandarás el ComboBox seleccionado a la propiedad ComboAñadir del Form2. ¿Qué es lo que hacae DirectCast, "envía" el sender?



En realidad DirectCast no sería obligatoria si utilizas Strict Off, pero es
una buena costumbre.

DirectCast hace un casting. Sender es el objeto emisor del evento. El
programador sabe que el emisor en ese caso tiene que ser un ComboBox, pero
está definido como Object para que sea genérico. Todo ComboBox es un Object
pero no todo Object es un ComboBox. Por eso se utiliza DirectCast, para
especializar el Object. Para asegurar que realmente es un ComboBox.

2. Si en vez de SENDER envías "e" qué es lo que recibe, el evento SelectedIndexChanged?



El parámetro "e" en ese evento está definido como de tipo EventArgs.
EventArgs no contiene ningún dato útil. Solo sirve como base para eventos que
ofrecen más información como KeyPress.

Voy a mirar tu sabia decisión de codificarlo alrevés: En lugar de que FrmAñadir tenga acceso al combo,Form1 que tenga acceso al texto devuelto por FrmAñadir...




En cuanto a hacerlo al revés. Así es como hago siempre este tipo de cosas:

En FrmAñadir:
-
Define estas propiedades en tiempo de diseño:

BtnAñadir => DialogResult = Ok
BtnCancelar => DialogResult = Cancel

Elimina el tratamiento de BtnAñadir_Click. No será necesario. Tampoco la
propiedad ComboAñadir

Añade esta propiedad:

public readonly property OpcionNueva as string
get
return TxtAñadir.Text
end get
end property


Y en 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.SelectedIndexChanged

dim combo as ComboBox = DirectCast(sender, ComboBox)
If combo.SelectedItem = "Añadir" then
Dim FA As New FrmAñadir
if FA.ShowDialog() = DialogResult.Ok then
combo.Items.Add(FA.OpcionNueva)
combo.Text = FA.OpcionNueva
MessageBox.Show("Se ha añadido: " & FA.OpcionNueva)
' Añadimos la opción a la BD
end if
FA.Dispose()
end if

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