Interfaz Gráfico de Usuario Moderno
Interfaz Gráfico de Usuario Moderno
Interfaz Gráfico de Usuario Moderno
Hola, en este tutorial realizaremos un Formulario de Menú Principal Plano, Moderno y Multi Forms
(Abrir Varios Formularios en un panel, tal como lo harías en un MDI Parent), con todas las
funcionalidades de un formulario normal, totalmente personalizado, con Windows Form, C# o
Visual Basic (VB.Net).
Bien, empecemos con el tutorial:
FormMenuPrincipal.cs /.vb
c#
visual basic
//Constructor
public FormMenuPrincipal()
{
InitializeComponent();
//Estas lineas eliminan los parpadeos del formulario o controles en la interfaz grafica (Pero no en un
100%)
this.SetStyle(ControlStyles.ResizeRedraw, true);
this.DoubleBuffered = true;
}
//RESIZE METODO PARA REDIMENCIONAR/CAMBIAR TAMAÑO A FORMULARIO EN
TIEMPO DE EJECUCION ----------------------------------------------------------
private int tolerance = 12;
private const int WM_NCHITTEST = 132;
private const int HTBOTTOMRIGHT = 17;
private Rectangle sizeGripRectangle;
protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
case WM_NCHITTEST:
base.WndProc(ref m);
var hitPoint = this.PointToClient(new Point(m.LParam.ToInt32() & 0xffff, m.LParam.ToInt32() >>
16));
if (sizeGripRectangle.Contains(hitPoint))
m.Result = new IntPtr(HTBOTTOMRIGHT);
break;
default:
base.WndProc(ref m);
break;
}
}
//----------------DIBUJAR RECTANGULO / EXCLUIR ESQUINA PANEL
protected override void OnSizeChanged(EventArgs e)
{
base.OnSizeChanged(e);
var region = new Region(new Rectangle(0, 0, this.ClientRectangle.Width,
this.ClientRectangle.Height));
sizeGripRectangle = new Rectangle(this.ClientRectangle.Width - tolerance,
this.ClientRectangle.Height - tolerance, tolerance, tolerance);
region.Exclude(sizeGripRectangle);
this.panelContenedor.Region = region;
this.Invalidate();
}
//----------------COLOR Y GRIP DE RECTANGULO INFERIOR
protected override void OnPaint(PaintEventArgs e)
{
SolidBrush blueBrush = new SolidBrush(Color.FromArgb(244, 244, 244));
e.Graphics.FillRectangle(blueBrush, sizeGripRectangle);
base.OnPaint(e);
ControlPaint.DrawSizeGrip(e.Graphics, Color.Transparent, sizeGripRectangle);
}
Creamos el evento MouseDown del Panel Barra de Titulo, e invocamos los métodos
anteriores creados.
c#
visual basic
private void panelBarraTitulo_MouseMove(object sender, MouseEventArgs e)
{
ReleaseCapture();
SendMessage(this.Handle, 0x112, 0xf012, 0);
}
Recomendaciones Finales
Crea los formularios hijos que se abrirán en el panel contenedor de Formulario al mismo tamaño
de este, adicionando las dimensiones del borde. para este ejemplo, el tamaño ideal es: 886 de
ancho; 496 de alto (El tamaño del panel contenedor de Formulario es 870; 457, a este le
sumamos el tamaño de los bordes del form: 16 de ancho, 39 de alto ), de esa manera evitamos
que le formulario parpadee al abrir formularios o redimensionar en tiempo de ejecución.
Eso es todo 🙂
Descargas
Descargar Proyecto en C#
(GitHub)
Descargar Proyecto en VB
(GitHub)
Navegación de entradas
Anterior: Entrada anterior:P2/ Formulario Plano, Sin Bordes y Moderno con Menú animado Efecto Sliding,
One Window, Versión Completa/ C#, WinForm + Pasar Datos entre Forms
Siguiente: Siguiente entrada:¿Cómo pasar datos entre formularios en Visual Basic .Net y Windows Forms?