Je veux faire un panneau ont une bordure épaisse. Puis-je définir ce en quelque sorte?
Je veux faire un panneau ont une bordure épaisse. Puis-je définir ce en quelque sorte?
PS, je suis à l'aide de C#. VS 2008.
Je viens de fouettée quelque chose comme ça jusqu'à la nuit dernière. Mais sa nature limitée. Importe-t-il si un contrôle avec une Minsize grand que le panneau de causes à couper le fond et les bords droit?
Ce UI est-ce? WinForms? WPF? ASP.Net?
Ah bonne question. Je suppose que c'est ok.
Chris, c'est une autre bonne question. Il est winforms.
Je vais poster le code dans une réponse.
Ce UI est-ce? WinForms? WPF? ASP.Net?
Ah bonne question. Je suppose que c'est ok.
Chris, c'est une autre bonne question. Il est winforms.
Je vais poster le code dans une réponse.
OriginalL'auteur jim | 2009-12-05
Vous devez vous connecter pour publier un commentaire.
Jim,
J'ai fait un contrôle de l'utilisateur et donné, c'est un ParentControlDesigner. Comme je l'ai indiqué dans mon commentaire ce n'est pas une solution parfaite pour ce que vous demandez. Mais il devrait être un bon point de départ. Oh tout pour info, je l'ai avec un personnalisable couleur de la bordure trop. J'ai été inspiré par une autre SORTE de poste afin de poursuivre ce... C'était plus compliqué que ce que j'attendais.
Pour obtenir des choses à réorganiser correctement lors de la configuration de la taille de la bordure d'un appel à PerformLayout est faite. Le remplacement DisplayRectangle et l'appel à SetDisplayRectLocation dans OnResize cause la bonne repositionnement de l'enfant de contrôles. Ainsi les contrôles enfants n'ont pas attendu "0,0" lorsque, dans le coin supérieur gauche de la plupart des... à moins que la largeur de la bordure est définie à 0... Et OnPaint fournit le dessin personnalisé de la frontière.
Bonne chance à toi! Faire des contrôles personnalisés qui sont les parents est difficile, mais pas impossible.
hmmm... pas tout à fait ce que j'espérais. Je vais attendre de voir si la meilleure des réponses. Si non je vais accepter celle-ci.
Belle réponse! C'est pourquoi j'aime StackOverflow. L'ancien des jours sans échantillons de code comme celui-ci a été beaucoup plus difficile à vivre.
OriginalL'auteur Jason D
Mettre en œuvre le panneau de l'événement de Peinture et de tracer une frontière. Par exemple:
Jouer avec les arguments de trouver quelque chose que vous aimez. Vous devez ajouter du code à revenir à des ControlPaint.DrawBorder si les styles visuels ne sont pas activés. Meh.
Utiliser le panneau de Remplissage de la propriété pour garder de l'espace pour la frontière pour être visible.
nobugs, puis-je accepter votre réponse à la place?
nvm. il a le même problème que Jason Ds trucs. Seulement il prend un paramètre de propriété. Donc sa plus simple expression, mais pas mieux.
C'est compliqué?
OriginalL'auteur Hans Passant
Si c'est juste la présentation, de mettre un panneau qui remplit le formulaire avec une couleur de fond la couleur de la bordure que vous voulez et un Dock style de Remplissage. Placez un autre panneau à l'intérieur de celle-ci avec le standard couleur d'arrière-plan et une station d'accueil style de Remplissage. Jouer avec un Rembourrage et de la Marge des deux panneaux pour obtenir la taille de la bordure que vous souhaitez (j'ai oublié laquelle param s'applique correctement à l'intérieur du panneau et le panneau extérieur). Placez vos commandes sur le panneau intérieur. Avec les deux panneaux ensemble à Quai=Remplir de, formulaire de redimensionnement est géré automatiquement pour vous. Vous pouvez avoir besoin d'expérimenter avec quelques commandes, mais je l'ai fait plusieurs fois sans aucun problème pour les deux fenêtres principales et popup formes.
OriginalL'auteur cdkMoose
C'est un vieux post, mais je trouve toujours utile. Et je viens de trouver une autre façon.
je dois me rappeler de vérifier les remplacements
OriginalL'auteur Aximili
C'est le genre de gréement, mais j'ai toujours l'habitude juste une étiquette pour chaque côté de la frontière. Vous devez définir la propriété autosize à faux et le quai un de chaque côté (gauche, droite, haut, bas). Ensuite il suffit de régler la largeur/hauteur/couleur de fond à faire ce que vous voulez.
Vous pouvez facilement faire cela un contrôle de l'utilisateur et simplement exposer certaines propriétés publiques personnalisées pour définir la largeur/hauteur pour vous et la couleur de fond de toutes les étiquettes pour changer la couleur.
eh bien, puisque toutes les étiquettes sont ancrées en interne sur le panneau tout dépendra de la façon dont le panneau est affiché. Pouvez-vous expliquer un peu plus sur ce que vous entendez par "taille minimale" plus grand que le panneau? Je ne pense pas être un bon exemple dans ma tête...
Je devine ce qu'il veut dire est ce que j'ai décrit à lui en utilisant presque les mêmes mots... en gros, si vous définissez un enfant contrôles taille minimale-à-dire, 100x100; puis, de l'ancrer à remplir. Maintenant la taille, le parent panneau permet de dire 50x50. Dans ma "solution" de l'enfant de contrôle est toujours placé correctement par rapport au coin supérieur gauche, mais la peinture de la droite et du bas faites couper par le contrôle enfant... je travaille toujours comment faire pour résoudre ce... bien sûr je peux me tromper... il peut signifier quelque chose d'autre.
et @jason. jason est juste sur ce que je veux dire.
ahhhhhh gotcha. Le mien ne pouvait probablement pas causer un problème alors. Nobugs la réponse semble être la meilleure ensuite. probablement beaucoup plus propre aussi
OriginalL'auteur Miles