Visual Basic.NET - comunicar formularios con costructores vb.net

   
Vista:

comunicar formularios con costructores vb.net

Publicado por djnilo (21 intervenciones) el 06/08/2016 22:36:20
buenas tardes

señores programades estoy desarrollando una aplicacion restorant tengo un problema con puedo comunicar dos formularios tengo un formuario de wfrm_diseño_mesas , otro formulario wfrm_comanda

en el diseño de mesas tengo un unos botones que son las mesas al prisionar el boton este llama al formulario comanda

pero tengo un errores me dice que los controles son privados

lo hice publico pero se bloque el formulario comanda
me parece que hay forma hacerlo con constructores pero no se hacerlo


9460075c82fc56daeee478d15bc48fd9o
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

comunicar formularios con costructores vb.net

Publicado por Miguel (352 intervenciones) el 07/08/2016 04:22:31
Hola,
Exactamente, te están comentando que los controles tienen un acceso "Private"; es decir que solo se pueden usar desde su clase. Para solucionarlo tienes que ir a la parte donde están declarados tus controles y cambiar el nivel de acceso por "Friend" o "Public".


Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

comunicar formularios con costructores vb.net

Publicado por djnilo (21 intervenciones) el 08/08/2016 16:06:04
gracias por responder miguel pero ya lo habia pesando pero me bloquea el funionamiento de los controles de los botones al dejarlos publico

1
2
3
4
5
6
7
8
9
Public Property Nuevo1() As Boolean
        Get
            Return ButtonNuevo.Enabled
 
        End Get
        Set(ByVal value As Boolean)
            ButtonNuevo.Enabled = value
        End Set
    End Property
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

comunicar formularios con costructores vb.net

Publicado por Miguel (352 intervenciones) el 08/08/2016 16:20:27
Que raro. ¿Y si intentas hacerlo con una función? Algo como:

1
2
3
Public Sub HabilitarBotonX(habilitar As Boolean)
    BotonX.Enabled = habilitar
End Sub


Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

comunicar formularios con costructores vb.net

Publicado por djnilo (21 intervenciones) el 08/08/2016 16:54:13
en que parte tedria que poner este codigo miguel tengo el primer formulario se llama Wfrm.diseño de mesas
el otro se llama wfrm_comanda

en el disño de mesas tengo este codigo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
Public Sub obtenerDatosComanda()
        DataGridView1.DataSource = objnegocio.MOSTRAR_ACTIVAS_OCUPADAS(objentidade)
        '
 
        Dim tipo As Integer
        Dim estadoComanda As String
        For z = 0 To DataGridView1.RowCount - 2
            If NombreMesa = DataGridView1.Rows.Item(z).Cells(0).Value Then
                WFrm_COMANDA.TextBox1.Text = DataGridView1.Rows.Item(z).Cells(1).Value
                WFrm_COMANDA.DateTimePicker2.Text = DataGridView1.Rows.Item(z).Cells(2).Value
                estadoComanda = DataGridView1.Rows.Item(z).Cells(3).Value
                WFrm_COMANDA.txtdescuentos.Text = DataGridView1.Rows.Item(z).Cells(4).Value
                WFrm_COMANDA.txtmonto.Text = DataGridView1.Rows.Item(z).Cells(5).Value
 
 
 
 
                '  WFrm_COMANDA.txtdescripcion.Text = Convert.ToString(DataGridView1.Rows.Item(z).Cells(6).Value)
                tipo = DataGridView1.Rows.Item(z).Cells(8).Value
                WFrm_COMANDA.txtidcliente.Text = DataGridView1.Rows.Item(z).Cells(9).Value
 
                WFrm_COMANDA.txtdnruc.Text = Convert.ToString(DataGridView1.Rows.Item(z).Cells(10).Value)
 
 
                WFrm_COMANDA.txtidmoz.Text = Convert.ToString(DataGridView1.Rows.Item(z).Cells(12).Value)
 
                'WFrm_COMANDA.TextBoxX2.Text = Convert.ToString(DataGridView1.Rows.Item(z).Cells(12).Value)
                WFrm_COMANDA.Label11.Text = Convert.ToString(DataGridView1.Rows.Item(z).Cells(13).Value)
                If tipo = 1 Then
                    WFrm_COMANDA.RadioButton2.Checked = True
                End If
                If tipo = 2 Then
                    WFrm_COMANDA.RadioButton1.Checked = True
 
                End If
                ' Formulario2.Activarregistrar = False
                WFrm_COMANDA.ButtonRegistrar.Enabled = False
 
                'WFrm_COMANDA.ButttonModificar.Enabled = True
 
 
                WFrm_COMANDA.ButtonNuevo.Enabled = True
                WFrm_COMANDA.ListarListview()
            End If
        Next

el otro se llama WFrm_comanda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Wilfredo Patricio Castillo

comunicar formularios con costructores vb.net

Eso se hace con los constructores sin problemas, es super sencillo.

en el formulario wfrm_comandas

en la seccion declaraciones después de donde dice:
Public Class wfrm_comanda, pones este código:

1
2
3
4
5
Public sub New()
 
InitializeComponents()
 
End Sub

Eso solo se hace al digitar public sub new y darle enter, se generará ese constructor
entonces dentro del paréntesis del New() es donde pasas los parámetros, en tu caso si quieres pasar el número de mesa, tendrías que primero declarar una variable privada por ejemplo
Private NumMesa as integer, para recibir el número de mesa.

Finalmente el formulario quedará con un constructor así:


1
2
3
4
5
6
Public Sub New(NMesa as integer)
 
InitializeComponents()
NumMesa=NMesa
 
End Sub

Y desde e formulario wfrm_diseño_mesas lo llamas a las comandas desde un botón así:


1
2
3
4
5
6
7
Boton1_Click(sender As Object, e As EventArgs) Handles Boton1.Click
 
Dim FComandas as new  wfrm_comandas(IdMesa)
 
FComandas.Show()
 
End Sub

Con eso le estarás enviando el número de la mesa en el constructor al formulario de comandas, ya en el formulario de comandas, te referirás a la mesa con el nombre de la variable privada NumMesa.

Eso sería todo, espero no haberte confundido.

Saludos cordiales,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

comunicar formularios con costructores vb.net

Publicado por djnilo (21 intervenciones) el 08/08/2016 18:45:42
muchas gracias Wiflredo pero estoy mas confundio

hice lo que me dijiste
en el formulario WFrm_Comanda
puse
1
2
3
4
5
6
7
Public Sub New(descripcion As String)
 
        InitializeComponent()
        txtdescripcion.Text = descripcion
 
 
End Sub
' pero como agrego botones Tengo el boton (botonnuevo, botonregistrar)
en el otro formulario
WFr_diseño_mesas
Public Sub obtenerDatosComanda()

como llamos a los componetes del otro

Dim FComandas as new wfrm_comandas(descripcion)

como resivo los datos del otro formualiro para ponerlo en una grilla

ejemplo

Wfrm_comanda.descripcion = DataGridView1.Rows.Item(z).Cells(5).Value
' necesito tambien agregar los botones



eso no va 'por que fcomandas.show


end sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Wilfredo Patricio Castillo

comunicar formularios con costructores vb.net

Entonces no explicaste bien.

Lo que yo te estoy poniendo es para un escenario siguiente:

Tengo 2 formularios

Primero se carga el formulario diseño_mesas, en el cual me imagino tiene la lista de mesas, y desde alli quieres llamar al formulario comandas, al cual le pasarás el número de mesa, en ese caso funciona perfecto lo que te indiqué en el post anterior.

Explica mejor en todo caso para poderte ayudar, ya que si las cosas son a revés, entonces la cosa no sería con constructores, sino sería con delegados.

Espero tu respuesta clara.

Saludos cordiales,

PD:Si tienes teamviewer, + skype contáctame para echarte una mano, solo agrégame a skype
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar