J'ai un contrôle personnalisé qui contient 6 contrôles de panneau qui agissent comme des conteneurs pour d'autres contrôles qui sont déposés pendant la conception. Cela a été fait en créant un concepteur personnalisé héritant de ParentControlDesign. Dans le concepteur, j'utilise EnableDesignMode pour activer la fonctionnalité de conception pour chaque contrôle de panneau. Le problème est que lorsque j'utilise le contrôle, je peux déplacer les panneaux. Que puis-je faire pour les empêcher de bouger pendant la conception?Comment empêcher le contrôle du conteneur d'être déplacé sous le contrôle de l'utilisateur pendant la conception?
1
A
Répondre
2
Je ne pouvais pas trouver une solution idéale pour ce problème, juste partielle. Je suppose que vous avez activé le mode de conception pour les panneaux suivant l'approche au this answer. Pour modifier le comportement de conception des panneaux, il faut leur donner leur propre concepteur. Voici un exemple de classe qui le fait:
using System;
using System.ComponentModel;
using System.Windows.Forms;
using System.Windows.Forms.Design;
[Designer(typeof(MyPanelDesigner))]
public class MyPanel : Panel {
private class MyPanelDesigner : ScrollableControlDesigner {
public override SelectionRules SelectionRules {
get { return SelectionRules.None; }
}
}
}
Remplacez les panneaux de votre UC par MyPanel. La propriété SelectionRules personnalisée garantit que l'utilisateur ne peut pas facilement faire glisser le panneau dans une autre position avec la souris. Les propriétés Location et Size sont cependant toujours modifiables dans la grille de propriétés. Pour se débarrasser de cela, je pense que vous devrez remplacer PreFilterProperties().
Cela a fonctionné! Merci beaucoup! –