Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

187
Visualizações
Mi control de usuario solo debe agregarse a un cierto tipo de control

¿Cómo puedo hacer que mi control de usuario solo se pueda agregar en un cierto tipo de control (aquí en mi caso, específicamente SplitContainer )?

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Necesitas cuidar algunas cosas:

  1. Comportamiento del elemento de la caja de herramientas del control
  2. Comportamiento del diseñador de control
  3. Comportamiento de tiempo de ejecución en tiempo de ejecución del control (opcional)

Cuando suelta el control de la caja de herramientas en una superficie de diseño, debe evitar que se suelte en un control no deseado; es responsabilidad del método CreateComponents de la clase ToolBoxItem asignada al control.

Después de agregar el control a la superficie de diseño (por ejemplo, en el padre deseado), debe evitar arrastrarlo sobre los controles no deseados; es responsabilidad del método CanBeParentedTo de la clase ControlDesigner asignada al control.

Finalmente, es posible que desee incluso evitar agregarlo a controles no deseados mediante programación en tiempo de ejecución; que en este caso, es responsabilidad del método OnParentChanged del control.

Ejemplo: limitar un control para que se aloje solo en un SplitterContainer

 using System; using System.ComponentModel; using System.ComponentModel.Design; using System.Drawing.Design; using System.Windows.Forms; using System.Windows.Forms.Design;
 [ToolboxItem(typeof(MyControlToolBoxItem))] [Designer(typeof(MyControlDesigner))] public class MyControl : Control { protected override void OnParentChanged(EventArgs e) { if (Parent != null && !(Parent is SplitterPanel)) throw new Exception("You can add this control only to a SplitterContainer."); base.OnParentChanged(e); } }
 public class MyControlDesigner : ControlDesigner { public override bool CanBeParentedTo(IDesigner parentDesigner) { if (parentDesigner.Component is SplitterPanel) return true; else return false; } }
 public class MyControlToolBoxItem : ToolboxItem { protected override IComponent[] CreateComponentsCore(IDesignerHost host, System.Collections.IDictionary defaultValues) { if (defaultValues.Contains("Parent")) { var parent = defaultValues["Parent"]; if (parent != null && parent is SplitterPanel) return base.CreateComponentsCore(host, defaultValues); } var svc = (IUIService)host.GetService(typeof(IUIService)); if (svc != null) svc.ShowError("You can drop this control only over a SplitterContainer."); return null; } }
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda