Arquitectura del control ToolStrip
Las clases ToolStrip y ToolStripItem proporcionan un sistema flexible y extensible para mostrar elementos de barra de herramientas, estado y menú. Todas estas clases están incluidas en el espacio de nombres System.Windows.Forms y suelen denominarse con el prefijo "ToolStrip" (como ToolStripOverflow) o con el sufijo "Strip" (como MenuStrip).
ToolStrip
En los temas siguientes se describe la clase ToolStrip y los controles que derivan de ella.
ToolStrip es la clase base abstracta de MenuStrip, StatusStrip y ContextMenuStrip. En el siguiente modelo de objetos se muestra la jerarquía de herencia de ToolStrip.
Puede tener acceso a todos los elementos de una clase ToolStrip a través de la colección Items. Puede tener acceso a todos los elementos de una clase ToolStripDropDownItem a través de la colección DropDownItems. En una clase derivada de ToolStrip, también puede usar la propiedad DisplayedItems para acceder solo a los elementos que se muestran actualmente. Se trata de los elementos que no están actualmente en un menú de desbordamiento.
Los siguientes elementos están diseñados expresamente para funcionar a la perfección con ToolStripSystemRenderer y con ToolStripProfessionalRenderer en todas las orientaciones. Están disponibles de forma predeterminada en tiempo de diseño para el control ToolStrip:
MenuStrip
MenuStrip es el contenedor de nivel superior que reemplaza a MainMenu. También proporciona características clave de control y de interfaz de múltiples documentos (MDI). Desde el plano funcional, ToolStripDropDownItem y ToolStripMenuItem funcionan con MenuStrip, aunque deriven de ToolStripItem.
Los siguientes elementos están diseñados expresamente para funcionar a la perfección con ToolStripSystemRenderer y con ToolStripProfessionalRenderer en todas las orientaciones. Están disponibles de forma predeterminada en tiempo de diseño para el control MenuStrip:
StatusStrip
StatusStrip reemplaza al control StatusBar. Las características especiales de StatusStrip incluyen un diseño de tabla personalizado, compatibilidad con el ajuste de tamaño y con el desplazamiento de los controles de ajuste del formulario y la propiedad Spring
, que permite que un elemento ToolStripStatusLabel rellene el espacio disponible automáticamente.
Los siguientes elementos están diseñados expresamente para funcionar a la perfección con ToolStripSystemRenderer y con ToolStripProfessionalRenderer en todas las orientaciones. Están disponibles de forma predeterminada en tiempo de diseño para el control StatusStrip:
ContextMenuStrip
ContextMenuStrip reemplaza a ContextMenu. Puede asociar un elemento ContextMenuStrip a cualquier control, y un clic con el botón derecho del mouse abre automáticamente el menú contextual. Puede mostrar un objeto ContextMenuStrip mediante programación usando el método Show. ContextMenuStrip admite los eventos cancelables Opening y Closing para controlar el relleno dinámico y los escenarios de varios clics. ContextMenuStrip admite imágenes, estados de comprobación de elementos de menú, texto, teclas de acceso, accesos directos y menús en cascada.
Los siguientes elementos están diseñados expresamente para funcionar a la perfección con ToolStripSystemRenderer y con ToolStripProfessionalRenderer en todas las orientaciones. Están disponibles de forma predeterminada en tiempo de diseño para el control ContextMenuStrip:
Características genéricas de ToolStrip
En los temas siguientes se describen las características y el comportamiento genéricos de ToolStrip y de sus controles derivados.
Representación
Hay varias formas de realizar representaciones personalizadas en controles ToolStrip. Como sucede con otros controles de Windows Forms, tanto ToolStrip como ToolStripItem tienen métodos OnPaint
y eventos Paint
que se pueden invalidar. Al igual que con la representación al uso, el sistema de coordenadas es relativo al área cliente del control; es decir, la esquina superior izquierda del control es 0, 0. El evento Paint
y el método OnPaint
de un elemento ToolStripItem se comportan como otros eventos de representación de controles.
Los controles ToolStrip también proporcionan un mejor acceso a la representación de los elementos y el contenedor a través de la clase ToolStripRenderer, que tiene métodos que se pueden invalidar para representar el fondo, el fondo del elemento, la imagen del elemento, la flecha de elemento, el texto del elemento y el borde de ToolStrip. Los argumentos de evento de estos métodos exponen varias propiedades, como rectángulos, colores y formatos de texto, que se pueden ajustar según sea necesario.
Para ajustar solo algunos aspectos de cómo se representa un elemento, normalmente lo que se hace es invalidar ToolStripRenderer.
Si va a escribir un elemento nuevo y desea controlar todos los aspectos de representación, invalide el método OnPaint
. En OnPaint
se pueden usar métodos de ToolStripRenderer.
ToolStrip se almacena doblemente en búfer de forma predeterminada, con lo cual se saca partido de la configuración OptimizedDoubleBuffer.
Relación jerárquica
El concepto de propiedad y relación jerárquica de los contenedores es más complejo en los controles ToolStrip que en otros controles de contenedor de Windows Forms. Esto es necesario para admitir escenarios dinámicos (como el desbordamiento o el uso compartido de elementos desplegables en varios elementos ToolStrip), así como para permitir la generación de un elemento ContextMenuStrip a partir de un control.
En la lista siguiente se describen los miembros relacionados con la relación jerárquica y se explica su uso.
OwnerItem accede al elemento que es el origen del elemento desplegable. Esto es similar a SourceControl, pero en lugar de devolver un control, devuelve un objeto ToolStripItem.
SourceControl determina qué control es el origen de ContextMenuStrip cuando varios controles comparten el mismo objeto ContextMenuStrip.
GetCurrentParent es un descriptor de acceso de solo lectura a la propiedad Parent. Un elemento principal difiere de un propietario en que el primero denota el elemento ToolStrip actual devuelto donde se muestra el elemento, que podría estar en el área de desbordamiento.
Owner devuelve el objeto ToolStrip cuya colección Items contiene el objeto ToolStripItem actual. Esta es la mejor forma de hacer referencia a ImageList o a otras propiedades en el objeto ToolStrip de nivel superior sin tener que escribir código especial para controlar el desbordamiento.
Comportamiento de los controles heredados
Los controles siguientes se bloquean cada vez que se usan en herencia:
ToolStripPanel que incluye los paneles en un objeto ToolStripContainer y también controles ToolStripPanel individuales.
Por ejemplo, cree una aplicación de Windows Forms mediante uno o varios de los controles de la lista anterior. Establezca el modificador de acceso de uno o varios controles en public
o en protected
y, después, compile el proyecto. Agregue un formulario que herede del primer formulario y seleccione un control heredado. El control aparece bloqueado, y se comporta como si su modificador de acceso fuera private
.
Compatibilidad de herencia de ToolStripContainer
El control ToolStripContainer admite escenarios heredados limitados, similar al ejemplo siguiente:
Cree una nueva aplicación Windows Forms.
Agregue un control ToolStripContainer al formulario.
Establezca el modificador de acceso de ToolStripContainer en
public
o enprotected
.Agregue cualquier combinación de controles ToolStrip, MenuStrip y ContextMenuStrip a las regiones ToolStripPanel de ToolStripContainer.
Compile el proyecto.
Agregue un formulario que herede del primer formulario.
Seleccione el objeto ToolStripContainer heredado en el formulario.
Comportamiento heredado de los controles secundarios
Después de completar los pasos anteriores, se produce el siguiente comportamiento heredado:
En el Diseñador, el control aparece con un icono que señala que es heredado.
Los controles ToolStripPanel están bloqueados; su contenido no se puede seleccionar ni reorganizar.
Puede agregar controles a ToolStripContentPanel, mover los controles y convertirlos en controles secundarios de ToolStripContentPanel.
Los cambios se conservarán después de compilar el formulario.
Nota
Quite los modificadores de acceso de todos los controles ToolStripPanel que formen parte de ToolStripContainer. El modificador de acceso de ToolStripContainer rige al control completo.
Confianza parcial
Las limitaciones de los objetos ToolStrip
en situaciones de confianza parcial están pensadas para evitar la entrada involuntaria de información personal que podría ser utilizada por personas o servicios no autorizados. Estas son las medidas de protección:
Los controles
ToolStripDropDown
requieren que AllWindows muestre elementos en un objeto ToolStripControlHost. Esto se aplica a ambos controles intrínsecos, como ToolStripTextBox, ToolStripComboBox y ToolStripProgressBar, así como a los controles creados por el usuario. Si este requisito no se cumple, estos elementos no se muestran. No se inicia ninguna excepción.La propiedad AutoClose no se puede establecer en
false
y se omite el parámetro de evento Closing cancelable. Esto hace que sea imposible escribir más de una pulsación de tecla sin descartar el elemento desplegable. Si este requisito no se cumple, estos elementos no se muestran. No se inicia ninguna excepción.Muchos eventos de control de pulsaciones de tecla no se generarán si se producen en contextos de confianza parciales distintos de AllWindows.
Las teclas de acceso no se procesan si AllWindows no se ha concedido.
Uso
Los siguientes patrones de uso guardan relación con el diseño de ToolStrip, la interacción del teclado y el comportamiento del usuario final:
Unido a un objeto ToolStripPanel
ToolStrip se puede cambiar de posición tanto dentro de ToolStripPanel como entre varios ToolStripPanel. La propiedad
Dock
se omite, y si la propiedad Stretch esfalse
, el tamaño de ToolStrip crece a medida que se van agregando elementos a ToolStripPanel. Normalmente, ToolStrip no suele participar en el orden de las pestañas.Acoplado
ToolStrip se coloca a un lado de un contenedor en una posición fija, y su tamaño se expande sobre todo el borde al que está acoplado. Normalmente, ToolStrip no suele participar en el orden de las pestañas.
Situado en posición absoluta
ToolStrip es como otros controles, en el sentido de que se coloca mediante la propiedad Location, tiene un tamaño fijo y normalmente participa en el orden de las pestañas.
Interacción con el teclado
Claves de acceso
Presionadas al mismo tiempo o después de la tecla ALT, las teclas de acceso son una manera de activar un control mediante el teclado. ToolStrip admite teclas de acceso explícitas e implícitas. La definición explícita usa un carácter de Y comercial (&) que precede a la letra. La definición implícita usa un algoritmo que intenta buscar un elemento coincidente en función del orden de los caracteres de una propiedad Text
determinada.
Teclas de método abreviado
Las teclas de método abreviado que usa MenuStrip emplean una combinación de la enumeración Keys (que no es específica del orden) para definir la tecla de método abreviado. También se puede usar la propiedad ShortcutKeyDisplayString para mostrar una tecla de método abreviado solo con texto, por ejemplo, mostrar "Supr" en lugar de "Suprimir".
Navegación
La tecla ALT activa el objeto MenuStrip al que MainMenuStrip apunta. Dicho esto, CTRL + TAB permite desplazarse entre los controles ToolStrip de varios objetos ToolStripPanel
. La tecla TAB y las teclas de dirección del teclado numérico permiten desplazarse entre los elementos de un objeto ToolStrip. Un algoritmo especial controla la navegación en la región de desbordamiento. La barra espaciadora permite seleccionar un objeto ToolStripButton, ToolStripDropDownButton o ToolStripSplitButton.
Foco y validación
Cuando se activa mediante la tecla ALT, normalmenteMenuStripni ToolStrip obtienen ni quitan el foco del control que lo tenga actualmente. Si hay un control hospedado en MenuStrip o una lista desplegable de MenuStrip, el control obtiene el foco cuando el usuario presiona la tecla TAB. En general, los eventos GotFocus, LostFocus, Enter y Leave de MenuStrip pueden no generarse cuando se activan a través del teclado. En tales casos, use en su lugar los eventos MenuActivate y MenuDeactivate.
De manera predeterminada, CausesValidation es false
. Llame a Validate explícitamente en el formulario para realizar la validación.
Layout
Para controlar el diseño de ToolStrip, elija uno de los miembros de ToolStripLayoutStyle con la propiedad LayoutStyle.
Diseños de pila
El apilamiento consiste en organizar elementos de manera adyacente en ambos extremos del objeto ToolStrip. En la lista siguiente se describen los diseños de pila.
StackWithOverflow es el valor predeterminado. Esta configuración hace que ToolStrip altere su diseño automáticamente de acuerdo con la propiedad Orientation para controlar escenarios de arrastre y acoplamiento.
VerticalStackWithOverflow representa los elementos ToolStrip situados de manera adyacente en vertical.
HorizontalStackWithOverflow representa los elementos ToolStrip situados de manera adyacente en horizontal.
Otras características de los diseños de pila
Alignment determina el final del objeto ToolStrip al que el elemento está alineado.
Cuando los elementos no caben en ToolStrip, aparece automáticamente un botón de desbordamiento. El valor de la propiedad Overflow determina si un elemento aparece en el área de desbordamiento siempre, según sea necesario o nunca.
En el evento LayoutCompleted, puede inspeccionar la propiedad Placement para determinar si un elemento se colocó en el elemento ToolStrip principal, en el desbordamiento ToolStrip o si no se muestra en absoluto. Los motivos típicos por los que un elemento no aparece son que el elemento no cabe en el elemento principal ToolStrip y su propiedad Overflow se estableció en Never.
Haga que un objeto ToolStrip sea móvil; para ello, colóquelo en un elemento ToolStripPanel y establezca su valor de GripStyle en Visible.
Otras opciones de diseño
Las otras opciones de diseño son Flow y Table.
Diseño de flujo
El diseño Flow es el valor predeterminado de ContextMenuStrip, ToolStripDropDownMenu y ToolStripOverflow. Es similar a FlowLayoutPanel. Las características del diseño Flow son las siguientes:
Todas las características de FlowLayoutPanel se exponen mediante la propiedad LayoutSettings. Debe convertir la clase LayoutSettings en una clase FlowLayoutSettings.
Puede usar las propiedades Dock y Anchor en el código para alinear los elementos dentro de la fila.
Se omite la propiedad Alignment.
En el evento LayoutCompleted, puede inspeccionar la propiedad Placement para determinar si un elemento se colocó en el elemento ToolStrip principal o no cabe.
El control de ajuste no aparece y, por lo tanto, un elemento ToolStrip en el estilo de diseño FlowToolStripPanel no se puede mover.
El botón de desbordamiento ToolStrip no se representa y Overflow se omite.
Diseño de tabla
El diseño Table es el valor predeterminado de StatusStrip. Es similar a TableLayoutPanel. Las características del diseño Flow son las siguientes:
Todas las características de TableLayoutPanel se exponen mediante la propiedad LayoutSettings. Debe convertir la clase LayoutSettings en una clase TableLayoutSettings.
Puede usar las propiedades Dock y Anchor en el código para alinear los elementos dentro de la celda de la tabla.
Se omite la propiedad Alignment.
En el evento LayoutCompleted, puede inspeccionar la propiedad Placement para determinar si un elemento se colocó en el elemento ToolStrip principal o no cabe.
El control de ajuste no aparece y, por lo tanto, un elemento ToolStrip en el estilo de diseño TableToolStripPanel no se puede mover.
El botón de desbordamiento ToolStrip no se representa y Overflow se omite.
ToolStripItem
En los temas siguientes se describe la clase ToolStripItem y los controles que derivan de ella.
ToolStripItem es la clase base abstracta de todos los elementos que se incluyen en un elemento ToolStrip. En el siguiente modelo de objetos se muestra la jerarquía de herencia de ToolStripItem.
Las clases ToolStripItem heredan directamente de ToolStripItem o bien heredan indirectamente de ToolStripItem a través de ToolStripControlHost o de ToolStripDropDownItem.
Los controles ToolStripItem deben estar contenidos en un elemento ToolStrip, MenuStrip, StatusStrip o ContextMenuStrip y no se pueden agregar directamente a un formulario. Las distintas clases de contenedor están diseñadas para contener un subconjunto adecuado de controles ToolStripItem.
En la tabla siguiente se enumeran los controles ToolStripItem estándar y los contenedores en los que mejor encajan visualmente. Aunque cualquier elemento ToolStrip se puede hospedar en cualquier contenedor derivado de ToolStrip, estos elementos se diseñaron para que se vean mejor en los siguientes contenedores:
Nota
ToolStripDropDown no se muestra en el cuadro de herramientas del Diseñador.
Elemento contenido | ToolStrip | MenuStrip | ContextMenuStrip | StatusStrip | ToolStripDropDown |
---|---|---|---|---|---|
ToolStripButton | Sí | No | N.º | No | Sí |
ToolStripComboBox | Sí | Sí | Sí | No | Sí |
ToolStripSplitButton | Sí | No | No | Sí | Sí |
ToolStripLabel | Sí | No | No | Sí | Sí |
ToolStripSeparator | Sí | Sí | Sí | No | Sí |
ToolStripDropDownButton | Sí | No | No | Sí | Sí |
ToolStripTextBox | Sí | Sí | Sí | No | Sí |
ToolStripMenuItem | No | Sí | Sí | No | N.º |
ToolStripStatusLabel | N.º | N.º | No | Sí | No |
ToolStripProgressBar | Sí | No | No | Sí | No |
ToolStripControlHost | Sí | Sí | No | Sí | Sí |
ToolStripButton
ToolStripButton es el elemento de botón de ToolStrip. Se puede mostrar con varios estilos de borde, y se puede usar para representar y activar estados operativos. También se puede definir para que tenga el foco de forma predeterminada.
ToolStripLabel
ToolStripLabel proporciona la funcionalidad de etiqueta en los controles ToolStrip. ToolStripLabel es como un elemento ToolStripButton que no obtiene el foco de forma predeterminada y que no se representa como presionado o resaltado.
ToolStripLabel como elemento hospedado admite teclas de acceso.
Use las propiedades LinkColor, LinkVisited y LinkBehavior en un elemento ToolStripLabel para admitir el control de vínculo en un elemento ToolStrip.
ToolStripStatusLabel
ToolStripStatusLabel es una versión de ToolStripLabel diseñada específicamente para su uso en StatusStrip. Entre las características especiales se incluyen BorderStyle, BorderSides y Spring.
ToolStripSeparator
ToolStripSeparator agrega una línea vertical u horizontal a una barra de herramientas o a un menú, dependiendo de la orientación. Proporciona la capacidad de agrupación de elementos (como los de un menú) o de distinción entre ellos.
Puede agregar un elemento ToolStripSeparator en tiempo de diseño seleccionándolo de una lista desplegable. Con todo, también puede crear automáticamente un elemento ToolStripSeparator escribiendo un guión (-) en el nodo de plantilla del Diseñador o en el método Add.
ToolStripControlHost
ToolStripControlHost es la clase base abstracta de ToolStripComboBox, ToolStripTextBox y ToolStripProgressBar. ToolStripControlHost puede hospedar otros controles (incluidos controles personalizados) de dos maneras:
Cree un objeto ToolStripControlHost con una clase que derive de Control. Para tener acceso completo al control hospedado y a las propiedades, debe volver a convertir la propiedad Control a la clase real que representa.
Extienda ToolStripControlHost y, en el constructor sin parámetros de la clase heredada, llame al constructor de clase base pasando una clase que deriva de Control. Esta opción permite encapsular propiedades y métodos de control comunes para facilitar el acceso en un objeto ToolStrip.
ToolStripComboBox
ToolStripComboBox es el objeto ComboBox optimizado para hospedar en un objeto ToolStrip. Un subconjunto de las propiedades y eventos del control hospedado se exponen en el nivel de ToolStripComboBox, pero el control ComboBox subyacente es totalmente accesible a través de la propiedad ComboBox.
ToolStripTextBox
ToolStripTextBox es el objeto TextBox optimizado para hospedar en un objeto ToolStrip. Un subconjunto de las propiedades y eventos del control hospedado se exponen en el nivel de ToolStripTextBox, pero el control TextBox subyacente es totalmente accesible a través de la propiedad TextBox.
ToolStripProgressBar
ToolStripProgressBar es el objeto ProgressBar optimizado para hospedar en un objeto ToolStrip. Un subconjunto de las propiedades y eventos del control hospedado se exponen en el nivel de ToolStripProgressBar, pero el control ProgressBar subyacente es totalmente accesible a través de la propiedad ProgressBar.
ToolStripDropDownItem
ToolStripDropDownItem es la clase base abstracta para ToolStripMenuItem, ToolStripDropDownButton y ToolStripSplitButton, que puede hospedar elementos directamente u hospedar más elementos en un contenedor desplegable. Para ello, establezca la propiedad DropDown en un objeto ToolStripDropDown y la propiedad Items de ToolStripDropDown Acceda a estos elementos desplegables directamente a través de la propiedad DropDownItems.
ToolStripMenuItem
ToolStripMenuItem es un objeto ToolStripDropDownItem que funciona con ToolStripDropDownMenu y ContextMenuStrip para controlar el resaltado especial, el diseño y la organización de columnas en los menús.
ToolStripDropDownButton
ToolStripDropDownButton se parece a ToolStripButton, pero muestra un área desplegable cuando el usuario hace clic en él. Oculte o muestre la flecha desplegable estableciendo la propiedad ShowDropDownArrow. ToolStripDropDownButton hospeda un control ToolStripOverflowButton que muestra los elementos que desbordan el objeto ToolStrip.
ToolStripSplitButton
ToolStripSplitButton combina la funcionalidad de botón y de botón desplegable.
Use la propiedad DefaultItem para sincronizar el evento Click del elemento desplegable seleccionado con el elemento que se muestra en el botón.
Características genéricas de ToolStripItem
ToolStripItem proporciona las siguientes características y opciones genéricas a los controles que heredan:
Eventos principales
Control de imágenes
Alineación
Relación entre texto e imagen
Estilo de presentación
Eventos principales
Los controles ToolStripItem reciben sus propios eventos de clic, mouse y representación, y también pueden realizar algún preprocesamiento de teclado.
Control de imágenes
Las propiedades Image, ImageAlign, ImageIndex, ImageKey y ImageScaling tienen que ver con diversos aspectos del control de imágenes. Para usar imágenes en controles ToolStrip, establezca estas propiedades directamente o establezca la propiedad ImageList de solo tiempo de ejecución.
El escalado de imágenes viene determinado por la interacción de las propiedades tanto en ToolStrip como en ToolStripItem, como se indica a continuación:
ImageScalingSize es la escala de la imagen final según viene determinada por la combinación de la configuración de ImageScaling la imagen y la configuración de AutoSize del contenedor.
Si AutoSize es
true
(valor predeterminado) y ToolStripItemImageScaling es SizeToFit, no se produce ningún escalado de imagen y el tamaño de ToolStrip es el del elemento más grande, o bien un tamaño mínimo prescrito.Si AutoSize es
false
y ToolStripItemImageScaling son None, no se produce ningún escalado de imagen ni de ToolStrip.
Alineación
El valor de la propiedad Alignment determina el final del objeto ToolStrip en el que un elemento aparece. La propiedad Alignment solo funciona cuando el estilo de diseño de ToolStrip está establecido en uno de los valores de desbordamiento de pila.
Los elementos se colocan en el objeto ToolStrip en el orden en que los elementos aparecen en la colección Items. Para cambiar mediante programación dónde se coloca un elemento, use el método Insert para mover el elemento de la colección. Este método mueve el elemento, pero no lo duplica.
Relación entre texto e imagen
La propiedad TextImageRelation define la ubicación relativa de la imagen con respecto al texto de un objeto ToolStripItem. Los elementos que carecen de una imagen, texto o ambos se tratan como casos especiales para que ToolStripItem no muestre una zona en blanco por el elemento o los elementos que faltan.
Estilo de presentación
DisplayStyle permite establecer los valores de las propiedades Text e Image de un elemento mientras se muestra solo lo que desea. Normalmente se usa para cambiar solamente el estilo de presentación cuando el mismo elemento se muestra en un contexto diferente.
Clases accesorias
Entre las clases que proporcionan otras funcionalidades se incluyen las siguientes:
ToolStripManager admite tareas relacionadas con ToolStrip en aplicaciones completas, como las opciones del representador, combinación y configuración.
ToolStripRenderer permite aplicar un estilo o tema concreto a un objeto ToolStrip fácilmente.
ToolStripProfessionalRenderer crea lápices y pinceles basados en una tabla de colores reemplazables (ProfessionalColorTable).
ToolStripSystemRenderer aplica colores del sistema y un estilo visual plano a las aplicaciones de ToolStrip.
ToolStripContainer es similar a SplitContainer. Usa cuatro paneles laterales acoplados (instancias de ToolStripPanel) y un panel central (una instancia de ToolStripContentPanel) para crear una disposición típica. Los paneles laterales no se pueden quitar, pero sí ocultar. El panel central no puede ni quitarse ni ocultarse. Puede organizar uno o varios controles ToolStrip, MenuStrip o StatusStrip en los paneles laterales, y usar el panel central para otros controles. ToolStripContentPanel proporciona también una manera de obtener compatibilidad con el representador en el cuerpo del formulario para lograr una apariencia uniforme. ToolStripContainer no admite interfaces de múltiples documentos (MDI).
ToolStripPanel proporciona un espacio para mover y organizar controles ToolStrip. Puede usar un solo panel si así lo decide, y ToolStripPanel funciona bien en escenarios de MDI.
Consulte también
.NET Desktop feedback