2011-02-11 11 views

Respuesta

5

Son 'derecho' alineados, como se puede ver. (Sin juego de palabras)

Right

Este es el comportamiento predeterminado para un menú. Necesitarás un dibujo personalizado para hacerlo de manera diferente.

2

Cada sistema operativo tiene su aspecto particular, y creo que debe tener muy buenas razones para no respetar cómo se ve cada otra aplicación en las ventanas. Supongo que eliminará el problema o extenderá el menú con OwnerDrawn elementos.

Here es el artículo de exageración sobre el tema.

7

Ah, creo que finalmente descubrí cómo hacer esto (me había estado confundiendo por un buen tiempo cómo conseguiste las dos capturas de pantalla diferentes ...). Resulta que hay dos formas en que puede indicar a Windows que alinee las teclas de método abreviado en un menú desplegable.

La primera (y probablemente lo más estándar) forma es insertar un carácter pestaña (\t) en la cadena correspondiente al texto del menú. Esto produce el ejemplo inferior que se muestra en su pregunta original, aquel en el que todos los identificadores están alineados a la izquierda y algunos sobresalen levemente. Este es el estándar en casi todas las aplicaciones de Microsoft, y la única opción que sabía que existía hasta hace unos minutos.

          The first option, created using a tab character delimiter, with shortcut key sequences left-aligned           cadena de recursos de la muestra: &Print…\tCtrl+P

La segunda forma consiste en reemplazar esa secuencia de escape \t con \a en la cadena de recursos (que, sí, aunque parezca extraño lo haría normalmente indica un alert bell). Esto hace que Windows right alinee todas las secuencias de teclas de método abreviado en el menú, produciendo el ejemplo ilustrado en su primera captura de pantalla. Esto produce un menú que utiliza espacio de pantalla de manera más eficiente (es más pequeño), pero esto tiene el costo de una alineación ordenada de cada una de las secuencias de teclas de método abreviado en sus márgenes izquierdos, lo que creo que facilita la lectura.

          The second option, created using an '\a' delimiter, with shortcut key sequences right-aligned           cadena de recursos de la muestra: &Print…\aCtrl+P

Así que si usted quiere que sus menús para parecerse a la segundo ejemplo, en su pregunta original (Sí, he dispuesto confusamente mis muestras al revésLo siento), debe delimitar la secuencia de teclas de método abreviado con un carácter de tabulación (\t) en el archivo de recursos que contiene las cadenas de texto del elemento de menú.

Lo extraño es que usted afirma estar usando .NET WinForms, que maneja todo esto automáticamente (lo que le ahorra la molestia de jugar con los archivos de recursos). Sé de hecho que inserta caracteres de pestañas, y todos los menús que he visto generar do se parecen a su segundo ejemplo.

Lo mejor que puede hacer es cambiar su menú al antiguo control MainMenu incluido con la versión anterior de .NET Framework. (Para hacer esto, probablemente tendrá que hacer clic con el botón derecho en Toolbox y agregar el control manualmente —, no está allí de forma predeterminada en las versiones posteriores de Visual Studio). Esto garantizará que vea el comportamiento de alineación que espera, consistente con todas las aplicaciones estándar de Windows como el Bloc de notas. También produce menús que se parecen a los menús del sistema operativo nativo (en Vista y 7, están pintados de azul) en lugar de los menús creados por el propietario producidos por el control MenuStrip que están completamente fuera de lugar en las versiones modernas de Windows.

de Microsoft official documentationhace confirman que el MainMenu control aún se puede utilizar para un uso futuro, por lo que no hay razón para temer a usarlo en sus aplicaciones. Me altamente recomiendo a todos usan este lugar:

Aunque MenuStrip reemplaza y aumenta la funcionalidad del control MainMenu de las versiones anteriores, MainMenu se retiene tanto para compatibilidad con versiones anteriores y uso futuro si lo desea.

+1

\ a (alerta de campana) no funciona cuando se utiliza AppendMenu (..., "& Abrir \ aCtrl + O"); , ¿sabes cómo usar esto usando 'AppendMenu' (sin usar el archivo de recursos)? – dns

Cuestiones relacionadas