IU Moderno, Menú Desplegable/Deslizante, Menú Lateral, Responsivo, Only Form – C#, VB.Net, WinForm

Versión actualizada…Solo para vídeo tutorial en C#

«Se eliminó el metodo customizeDesign() y se modificó el método hideSubmenu(), Ver punto 3, el vídeo tutorial en visual basic está basada en este articulo, no tiene cambios»

……..

Hola, en esta oportunidad crearemos otra interfaz de usuario plano y moderno, con menú lateral, menús desplegables, la opción de abrir un único formulario en un panel, y cómo hacer una interfaz de usuario responsivo, o adaptable a cualquier tamaño, por ejemplo, el logo siempre debe permanecer en el centro del formulario a pesar de redimensionarlo, de igual manera con los controles de usuario, como: Datagridview, cuadros de texto, botones, etiquetas, entre otros. Para lograr una interfaz de usuario responsivo, o adaptable a cualquier tamaño, Simplemente es necesario establecer la propiedad ANCHOR o DOCK, dependiendo del objetivo que se quiere lograr. También el uso de estas propiedades, es el truco para lograr Menús desplegables y adaptables. En este tutorial les enseñaré la manera más sencilla y rápida, con unas cuantas líneas de código, aplicando lógica e imaginación. Todo ello con Windows Forms, C#, Visual Basic.Net.

Bueno empecemos con el tutorial:

1. Crear proyecto de aplicación de Windows Forms

En Visual Studio, crea un proyecto de aplicación de Windows Form en Visual C# o Visual Basic,  y asígnele el nombre que desee.

2. Diseñar la Interfaz Gráfica de Usuario

Una vez creado el proyecto, diseñe el Formulario de la siguiente manera, la configuración de las propiedades se describen abajo.

Descripción de las propiedades del formulario y controles de usuario:

Formulario

Font Size= 10
Size= 950,600
MinimunSize= 950,600
StartPosition= CenterScreem

Panel Menú Lateral

BackColor= 11, 7, 17
Dock= Left
Size= 250, 561
Name= «panelSideMenu»
AutoScroll= True

Panel Logo

Dock= Top
Size= 250, 95
Name= «panelLogo»

Botón Principal 1

Dock= Top
Size=250, 45
FlatStyle= Flat
FlatAppearance.BorderSize= 0
FlatAppearance.MouseDownBackColor=23, 21, 32 FlatAppearance.MouseOverBackColor= 24, 22, 34
ForeColor= Silver
TextAlign= MiddleLeft
TextImageRelation= ImageBeforeText
Padding.Left= 10

Panel de Submenú 1

BackColor= 35, 32, 39
Dock= Top
Size= 250, 165

Botón de Submenú 1

Dock= Top
Size=250, 40
FlatStyle= Flat
FlatAppearance.BorderSize= 0
FlatAppearance.MouseDownBackColor=42, 38, 46 FlatAppearance.MouseOverBackColor= 42, 38, 46
ForeColor= Silver
TextAlign= MiddleLeft
TextImageRelation= ImageBeforeText
Padding.Left= 10

Panel de Reproducción

BackColor= 23, 21, 32
Dock= Bottom
Size= 684, 130
Name= «panelPlayer»

Panel Contenedor de Formularios Hijos

BackColor= 32, 30, 45
Dock= Fill
Name= «panelChildForm»

3. Crear Método Ocultar submenús

Ahora codificaremos el formulario. Para ello, clic derecho sobre el formulario y seleccionamos ver código, o puedes realizar doble clic sobre el formulario para abrir el código y crear el evento load.

  • Creamos un método de tipo vacío de nombre ocultar submenu (hideSubmenu). En este método simplemente ocultaremos todos los paneles de submenú al iniciar la aplicación, o para ocultar el panel submenú que se mostró/abrió previamente. Para ello, establecemos la propiedad visible a falso.
  • Invocamos el método en el constructor ( debe ser después del método inicializar componentes), o desde el evento load del formulario. También invocamos el método desde los botones de submenu y botones que no muestran un menú desplegable. Ver punto 7 .
    public Form1()
    {
        InitializeComponent();
        hideSubMenu();
    }

    private void hideSubMenu()
    {
        panelMediaSubMenu.Visible = false;
        panelPlaylistSubMenu.Visible = false;
        panelToolsSubMenu.Visible = false;
    }
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        hideSubmenu()
    End Sub

    Private Sub hideSubmenu()

        PanelMediaSubmenu.Visible = False
        PanelPlaylistSubmenu.Visible = False
        PanelToolsSubmenu.Visible = False

    End Sub

4. Crear Método Mostrar submenú

Creamos otro método de tipo vacío para mostrar el panel submenú.

private void showSubMenu(Panel subMenu)
{
    if (subMenu.Visible == false)
    {
        hideSubMenu();
        subMenu.Visible = true;
    }
    else
        subMenu.Visible = false;
}
    Private Sub showSubmenu(submenu As Panel)

        If submenu.Visible = False Then
            hideSubmenu()
            submenu.Visible = True
        Else
            submenu.Visible = False
        End If

    End Sub

5. Mostrar Panel submenú desde el botón menú desplegable (Botón Principal)

Invocamos el método mostrar submenu (showSubMenu) desde los respectivos botones que tienen paneles de submenú.

private void btnMedia_Click(object sender, EventArgs e)
{
    showSubMenu(panelMediaSubMenu);
}
private void btnPlaylist_Click(object sender, EventArgs e)
{
    showSubMenu(panelPlaylistSubMenu);
}
private void btnTools_Click(object sender, EventArgs e)
{
    showSubMenu(panelToolsSubMenu);
}
    Private Sub btnMedia_Click(sender As Object, e As EventArgs) Handles btnMedia.Click
        showSubmenu(PanelMediaSubmenu)
    End Sub

    Private Sub btnPlaylist_Click(sender As Object, e As EventArgs) Handles btnPlaylist.Click
        showSubmenu(PanelPlaylistSubmenu)
    End Sub

    Private Sub btnTools_Click(sender As Object, e As EventArgs) Handles btnTools.Click
        showSubmenu(PanelToolsSubmenu)
    End Sub

6. Crear Método Abrir formulario hijo en panel contenedor

Creamos un método para abrir los formularios hijos en el panel contenedor. Abriremos un único formulario dentro del panel contenedor. Para ello es necesario cerrar el formulario anterior, entonces necesario almacenar el formulario que se abre en una variable de nombre formulario activo o formulario actual. Si deseas abrir varios formularios dentro del panel, puedes ver este este tutorial en C# o Visual Basic, o puedes modificar este método según tus necesidades.

private Form activeForm = null;
private void openChildFormInPanel(Form childForm)
{
    if (activeForm != null)
        activeForm.Close();
    activeForm = childForm;
    childForm.TopLevel = false;
    childForm.FormBorderStyle = FormBorderStyle.None;
    childForm.Dock = DockStyle.Fill;
    panelChildForm.Controls.Add(childForm);
    panelChildForm.Tag = childForm;
    childForm.BringToFront();
    childForm.Show();
}
    Private currentForm As Form = Nothing
    Private Sub openChildForm(childForm As Form)

        If currentForm IsNot Nothing Then currentForm.Close()
        currentForm = childForm
        childForm.TopLevel = False
        childForm.FormBorderStyle = FormBorderStyle.None
        childForm.Dock = DockStyle.Fill
        PanelChildForm.Controls.Add(childForm)
        PanelChildForm.Tag = childForm
        childForm.BringToFront()
        childForm.Show()

    End Sub

7.-Abrir Formulario hijo y ocultar submenu abierto

private void button2_Click(object sender, EventArgs e)
{
    openChildFormInPanel(new Form2());
    //..
    //your codes
    //..
    hideSubMenu();
}
    Private Sub button2_Click(sender As Object, e As EventArgs) Handles button2.Click

        openChildForm(New Form2())
        '...
        'your codes
        '...
        hideSubmenu()

    End Sub

Eso es todo 🙂

Ver video tutorial

C#

Visual Basic (VB.Net)

Descargas

Ver IU Moderno, Plano, Multi Formulario

C#

Visual Basic .NET

6 comentarios en «IU Moderno, Menú Desplegable/Deslizante, Menú Lateral, Responsivo, Only Form – C#, VB.Net, WinForm»

  1. ótimos videos amigo. sou iniciante, mais estou fazendo uma aplicação usando um pouco de cada video. mudei de vb.net para C#, só pra tentar encontrar esse player ou tutorial dele completo. seria de muito bom grado e de muita utilidade para mim. sussesso a toda equipe!…

  2. Excelente tutorial y diseño. Me inspiró tanto que creé una base completa de reproductores multimedia basados ​​en tu diseño. Echa un vistazo en https://youtu.be/2wpi-wsFtRo Espero no haber roto ningún derecho de autor. Déjame saber cómo te gusta. Perdón por mi español, pero me fui de España hace más de 40 años. Saludos desde Sydney Australia.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *