none
mostrar botones diamicamente net FlowPanel RRS feed

  • Pregunta

  • buenas tardes 

    programadores me podrian orientar por favor trato de mostrar una categoria de platos para que se formen uno botones  en  el conetenedor  windows form flowlayourpanel

    vb.net 2015

    sql 2014

    tengo  esto montado en capas 

      Dim Categoria As New CpE_Cls_CATEGORIA_PLATO ' entidades
    Dim objCateogiaPlato As New CpN_Cls_CATEGORIA_PLATO 'capa negocio

    queria hacer algo asi

    para mostrar los botones en el contenedor pero no hace nada ?

    como deberia realizar esto para que muestre los platos  en el contenedor por favor

     Private Sub FrmPedidos_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    
    
            For Each Categoria In objCateogiaPlato.MOSTRAR_CATEGORIA_PLATO_ACTIVO(Categoria)
    
    
                Dim btn As New Button()
                btn.Text = Categoria.Nombre
                btn.Size = New System.Drawing.Size(80, 80)
                btn.ForeColor = Color.White
                btn.Tag = Categoria.idcate
                CategoriesFlowPanel.Controls.Add(btn)
                'btn.Click += CategoryButtonClick()
    
            Next


    capa negocio 

       Function MOSTRAR_CATEGORIA_PLATO_ACTIVO(ByVal obj As CAPA_ENTIDAD.CpE_Cls_CATEGORIA_PLATO)
            Dim objdatos As New CAPA_DATOS.CpD_Cls_CATEGORIA_PLATO
            Return objdatos.MOSTRAR_CATEGORIA_PLATO_ACTIVO(obj)
        End Function

    capa datos  lo que hace esto es mostar la categoria de platos activos 

      Public Function MOSTRAR_CATEGORIA_PLATO_ACTIVO(ByVal obj As CAPA_ENTIDAD.CpE_Cls_CATEGORIA_PLATO)
            Dim cn As New SqlConnection(Conexion.Connectionstring)
            Dim dtprov As New Data.DataTable
            Try
                cn.Open()
                dapprov.SelectCommand = cn.CreateCommand
                dapprov.SelectCommand.CommandText = "PA_ListarCategoriaPlatoActivo"
                dapprov.SelectCommand.CommandType = CommandType.StoredProcedure
                dapprov.SelectCommand.ExecuteNonQuery()
                dapprov.Fill(dtprov)
                Return dtprov
            Catch ex As Exception
                MsgBox(ex.Message)
                Throw New Exception(ex.Message)
            Finally
                If cn.State = ConnectionState.Open Then
                    cn.Dispose()
                    cn.Close()
                End If
            End Try
        End Function


    • Editado djnilo lunes, 19 de febrero de 2018 21:01
    lunes, 19 de febrero de 2018 20:59

Respuestas

  • yo lo hago de esta forma

      Private Sub TESORERIA_POS_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    
            'Try
                FlowLayoutPanel1.Controls.Clear()
                Using dt As DataTable = Me.ObtenerDatos_Secciones()
                    For index As Integer = 0 To dt.Rows.Count - 1
                        Dim row As DataRow = dt.Rows(index)
                        Dim Textolabel As String = Convert.ToString(row("Descripcion"))
                        Dim control As New Label()
                        control.Name = "lblse " & (index + 1)
                        control.Text = Textolabel
                        control.BorderStyle = BorderStyle.Fixed3D
                        control.TextAlign = ContentAlignment.MiddleCenter
                        control.Font = New Font("Times New Roman ", 9.75, FontStyle.Bold)
                        control.ForeColor = Color.White
                        control.BackColor = Color.SteelBlue
                        control.Height = 74
                        control.Width = 120
                        FlowLayoutPanel1.FlowDirection = FlowDirection.LeftToRight
                        FlowLayoutPanel1.Controls.Add(control)
                        AddHandler control.Click, AddressOf txt_Click
                    Next
                End Using
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
    
            
        End Sub
     Private Function ObtenerDatos_Secciones() As DataTable
            Using cnn As New SqlConnection(configuracion.ConnectionString)
                Dim cmd As SqlCommand = cnn.CreateCommand()
                cmd.CommandText = "SELECT * FROM SECCIONES_ARTICULOS_SERVICIOS_TABLA "
                Dim da As New SqlDataAdapter(cmd)
                Dim dt As New DataTable("SECCIONES_ARTICULOS_SERVICIOS_TABLA")
                da.Fill(dt)
                Return dt
            End Using
        End Function




    • Editado Efrain Diaz lunes, 19 de febrero de 2018 23:53
    • Marcado como respuesta djnilo martes, 20 de febrero de 2018 15:23
    lunes, 19 de febrero de 2018 23:51
  • verifica la propiedad autoscroll en true, en las propiedades de tu flowlayout panel
    • Marcado como respuesta djnilo viernes, 23 de febrero de 2018 19:27
    martes, 20 de febrero de 2018 18:33

Todas las respuestas

  • yo lo hago de esta forma

      Private Sub TESORERIA_POS_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    
            'Try
                FlowLayoutPanel1.Controls.Clear()
                Using dt As DataTable = Me.ObtenerDatos_Secciones()
                    For index As Integer = 0 To dt.Rows.Count - 1
                        Dim row As DataRow = dt.Rows(index)
                        Dim Textolabel As String = Convert.ToString(row("Descripcion"))
                        Dim control As New Label()
                        control.Name = "lblse " & (index + 1)
                        control.Text = Textolabel
                        control.BorderStyle = BorderStyle.Fixed3D
                        control.TextAlign = ContentAlignment.MiddleCenter
                        control.Font = New Font("Times New Roman ", 9.75, FontStyle.Bold)
                        control.ForeColor = Color.White
                        control.BackColor = Color.SteelBlue
                        control.Height = 74
                        control.Width = 120
                        FlowLayoutPanel1.FlowDirection = FlowDirection.LeftToRight
                        FlowLayoutPanel1.Controls.Add(control)
                        AddHandler control.Click, AddressOf txt_Click
                    Next
                End Using
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
    
            
        End Sub
     Private Function ObtenerDatos_Secciones() As DataTable
            Using cnn As New SqlConnection(configuracion.ConnectionString)
                Dim cmd As SqlCommand = cnn.CreateCommand()
                cmd.CommandText = "SELECT * FROM SECCIONES_ARTICULOS_SERVICIOS_TABLA "
                Dim da As New SqlDataAdapter(cmd)
                Dim dt As New DataTable("SECCIONES_ARTICULOS_SERVICIOS_TABLA")
                da.Fill(dt)
                Return dt
            End Using
        End Function




    • Editado Efrain Diaz lunes, 19 de febrero de 2018 23:53
    • Marcado como respuesta djnilo martes, 20 de febrero de 2018 15:23
    lunes, 19 de febrero de 2018 23:51
  • yo lo hago de esta forma

      Private Sub TESORERIA_POS_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    
            'Try
                FlowLayoutPanel1.Controls.Clear()
                Using dt As DataTable = Me.ObtenerDatos_Secciones()
                    For index As Integer = 0 To dt.Rows.Count - 1
                        Dim row As DataRow = dt.Rows(index)
                        Dim Textolabel As String = Convert.ToString(row("Descripcion"))
                        Dim control As New Label()
                        control.Name = "lblse " & (index + 1)
                        control.Text = Textolabel
                        control.BorderStyle = BorderStyle.Fixed3D
                        control.TextAlign = ContentAlignment.MiddleCenter
                        control.Font = New Font("Times New Roman ", 9.75, FontStyle.Bold)
                        control.ForeColor = Color.White
                        control.BackColor = Color.SteelBlue
                        control.Height = 74
                        control.Width = 120
                        FlowLayoutPanel1.FlowDirection = FlowDirection.LeftToRight
                        FlowLayoutPanel1.Controls.Add(control)
                        AddHandler control.Click, AddressOf txt_Click
                    Next
                End Using
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
    
            
        End Sub
     Private Function ObtenerDatos_Secciones() As DataTable
            Using cnn As New SqlConnection(configuracion.ConnectionString)
                Dim cmd As SqlCommand = cnn.CreateCommand()
                cmd.CommandText = "SELECT * FROM SECCIONES_ARTICULOS_SERVICIOS_TABLA "
                Dim da As New SqlDataAdapter(cmd)
                Dim dt As New DataTable("SECCIONES_ARTICULOS_SERVICIOS_TABLA")
                da.Fill(dt)
                Return dt
            End Using
        End Function




    muchas gracias Efrain Diaz me sirvio consulta como podria poner en scroll el el contenedor porqu no muestra todo gracias
    martes, 20 de febrero de 2018 15:24
  • verifica la propiedad autoscroll en true, en las propiedades de tu flowlayout panel
    • Marcado como respuesta djnilo viernes, 23 de febrero de 2018 19:27
    martes, 20 de febrero de 2018 18:33
  • ya lo habia visto gracias efrain diaz
    viernes, 23 de febrero de 2018 19:28