6 votes

Créer un contrôle personnalisé qui a une hauteur fixe dans le designer

Je veux créer un contrôle personnalisé (dérivé de la classe Control), et lorsque je fais glisser ce contrôle personnalisé vers un formulaire dans le concepteur, je ne peux modifier que sa largeur. Cette fonctionnalité est identique à celle d'une zone de texte à ligne unique.

Mise à jour : Mon application est Windows Form.

14voto

Abel Fontes Points 56

Voir http://www.windowsdevelop.com/Windows-forms-general/how-to-set-that-a-control-resizes-in-width-only-9207.shtml .

Vous remplacez SetBoundsCore et définissez un Designer pour supprimer les poignées de redimensionnement supérieures et inférieures.

using System;
using System.ComponentModel;
using System.Windows.Forms;
using System.Windows.Forms.Design;

namespace MyControlProject
{
    [Designer(typeof(MyControlDesigner))]
    public class MyControl : Control
    {
        protected override void SetBoundsCore(int x, int y, int width, int height, BoundsSpecified specified)
        {
            height = 50;
            base.SetBoundsCore(x, y, width, height, specified);
        }
    }

    internal class MyControlDesigner : ControlDesigner
    {
        MyControlDesigner()
        {
            base.AutoResizeHandles = true;
        }
        public override SelectionRules SelectionRules
        {
            get
            {
                return SelectionRules.LeftSizeable | SelectionRules.RightSizeable | SelectionRules.Moveable;
            }
        }
    }
}

9voto

Amsakanna Points 4161

Essayez ceci

protected override void SetBoundsCore(int x, int y, 
   int width, int height, BoundsSpecified specified)
{
   // Set a fixed height for the control.
   base.SetBoundsCore(x, y, width, 75, specified);
}

http://msdn.microsoft.com/en-us/library/system.Windows.forms.control.setboundscore(VS.71).aspx

1voto

C.Evenhuis Points 10818
    this.MaximumSize = new System.Drawing.Size(0, 20);
    this.MinimumSize = new System.Drawing.Size(0, 20);

Apparemment, .NET considère qu'une largeur minimale et maximale de 0 correspond à "toute largeur".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X