2010-02-09 9 views
5

Tengo una clase personalizada que se deriva de SplitContainer:tarjeta de encargo para un control

namespace Builder.Components 
{ 
    public partial class ProjectSidebar : SplitContainer 
    { 
     public ProjectSidebar() 
     { 
      InitializeComponent(); 
     } 
    } 
} 

Ahora, cuando el botón derecho del ratón y seleccione Ver diseñador me gustaría ver el SplitContainer y editarlo , como lo haría con los controles predeterminados (soltar un panel, etc.). Todo lo que veo es un mensaje para agregar controles y cambiar a Vista de código.

¿Cómo lograr esto?

Respuesta

9

Para agregar funcionalidad de tiempo de diseño como operaciones adicionales (conocidas como listas de acciones y verbos según cómo se proporcionan) o arrastrar elementos visuales como encabezados o barras divididas, necesita implementar un diseñador personalizado (generalmente derivado de ControlDesigner) que permite al diseñador de Windows Forms entender cómo interactuar con su control personalizado en tiempo de diseño.

MSDN tiene a lengthy section al agregar soporte en tiempo de diseño para sus controles. Describe todo desde type converters hasta extender providers y designer serialization hasta designer customization.

recursos adicionales

This article on CodeProject contiene información sobre la creación de los diseñadores de controles personalizados. También hay algunos consejos útiles here y en this other StackOverflow question.

1

Al escribir su control, debe asegurarse de agregarle lógica de tiempo de diseño.

Consulte this (.NET 1.0) article on MSDN para obtener más detalles. Here es otro artículo de 2003.

+0

Gracias, pero parece que no puedo encontrar cómo y qué lógica de diseño agregar en este código específico y cómo terminar de crear/llenar mi control en el Diseñador ... – MysticEarth

3

Solo las clases Form y UserControl tienen diseñadores que le permiten editar sus controles secundarios en tiempo de diseño. Crear su propio diseñador para darle a SplitContainer el mismo comportamiento no es exactamente simple, sobre todo porque está tan mal documentado y es difícil de depurar. Deberá estudiar el código de marco con Reflector para hacerlo bien.

Puntualice este problema, ponga el SplitContainer en un control de usuario. Establezca su propiedad Dock en Fill. Ahora es fácil.

Cuestiones relacionadas