Como hacer que la barra de menus este en la barra del titulo

Iniciado por juanedwin, 26 Noviembre 2021, 16:56 PM

0 Miembros y 1 Visitante están viendo este tema.

juanedwin

saludos
Quisiera lograr que mi aplicacion se vea como la de visual studio 2019, es decir la barra de menus este en la barra de titulos y cosas mas ahi...
saludos

Mohicano

#1
El framework comercial de Telerik, tanto para WinForms como para WPF provee un tema visual con apariencia de Visual Studio 2019. Probablemente haya alternativas gratuitas y open source de un tema con apariencia de Visual Studio 2019, al menos para WPF, sería cosa de buscarlo.

Pero lo de colocar la barra de menues o toolstrip en la barra de título es otro cantar...

Para WindowsForms hay un par de formas, la primera y más sencilla sería simular una barra de título, es decir primero ocultas por completo la barra de título y los bordes del form ('Form.FormBorderStyle = None') y luego creas y añades un botón de cerrar, minimizar y etc en la parte superior del area cliente de tu form.

La segunda y más sofisticada forma de hacerlo sería extendiendo la composición de la barra de título al area cliente del form, entre otras cosas:

Cita de: https://social.msdn.microsoft.com/Forums/vstudio/en-US/392c9625-8df2-4ffa-899b-380d01241076/toolbar-in-the-form-titlebar?forum=vbgeneral

Este ejemplo (la respuesta aceptada) no lo he probado pero parece cumplir dicho cometido:

https://social.msdn.microsoft.com/Forums/vstudio/en-US/349d5d86-3b59-4116-9c5b-f5240f1bed4d/how-to-add-a-control-to-the-non-client-area-of-a-custom-form?forum=winforms

Puede que estas alternativas también te sirvan:

https://stackoverflow.com/questions/25070842/extend-non-client-area-on-form-with-custom-drawn-titlebar
https://www.codeproject.com/Articles/93959/WinForm-Extended

juanedwin

gracias, uso la opcion de borrar el titulo con NONE y de ahi ya lo metos lo que deseo en un panel... pero las demas opciones estan realmente interesantes.... gracias

Mohicano

#3
Imagino que si lo haces así, tarde o temprano tendrás la necesidad de mover el form sin bordes arrastrando el ratón, así que por si acaso te sirve te dejo una solución para eso:

Cita de: https://stackoverflow.com/a/64698815/1248295Dim InitialMouseDownLocation As Point

Private Sub Panel1_MouseDown(sender As Object, e As MouseEventArgs) Handles Panel1.MouseDown
   If e.Button = MouseButtons.Left Then
       InitialMouseDownLocation = e.Location
       Cursor.Current = Cursors.NoMove2D
   End If
End Sub

Private Sub Panel1_MouseMove(sender As Object, e As MouseEventArgs) Handles Panel1.MouseMove
   If e.Button = MouseButtons.Left Then
       Location = New Point(Location.X - InitialMouseDownLocation.X + e.X, Location.Y - InitialMouseDownLocation.Y + e.Y)
   End If
End Sub

Private Sub Panel1_MouseUp(sender As Object, e As MouseEventArgs) Handles Panel1.MouseUp
   Cursor.Current = Cursors.Default
End Sub


PD: Donde pone: 'Handles Panel1.MouseDown', 'Handles Panel1.MouseMove' y 'Handles Panel1.MouseUp' puedes añadir a la derecha de estos separados por una coma el nombre del form y de todos los controles que quieras que sirvan para arrastrar el form.

juanedwin

#4
si, funciona, y mueve los controles dentro del form, ese Location solo, asume la del form .... gracias
PD: todo OK, pregunta y como puedo sacar ese menu de sistema que trae el formulario al presionas Alt+Tab :(

Mohicano

Cita de: juanedwin en  7 Diciembre 2021, 16:15 PM
PD: todo OK, pregunta y como puedo sacar ese menu de sistema que trae el formulario al presionas Alt+Tab :(

no te entendí bien que es lo que pasa con el menú ALT+TAB, pero de todas formas es mejor si creas un nuevo hilo para una nueva consulta.