如何使UserControl锁定到一定的高度?

Ian*_*oyd 3 user-controls winforms

不允许用户TextBox垂直调整控件的大小.a的高度TextBox被锁定到文本框应该是理想的高度.

更重要的是,Visual Studio甚至不提供垂直拖动句柄:

在此输入图像描述

我如何为我提供相同的机制UserControl

Kev*_*ick 9

我将详细阐述汉斯的评论.您可以将专用代码(称为Designer)与UserControl相关联,以便在将其放置在Visual Studio中的表单上时,用户在配置控件的方式上受到限制.

  1. System.Design在项目中添加引用.

  2. 使用以下示例代码:

    [Designer(typeof(FixedHeightUserControlDesigner))]
    public partial class FixedHeightUserControl : UserControl
    {
        private const int FIXED_HEIGHT = 25;
    
        protected override void OnSizeChanged(EventArgs e)
        {
            if (this.Size.Height != FIXED_HEIGHT)
                this.Size = new Size(this.Size.Width, FIXED_HEIGHT);
    
            base.OnSizeChanged(e);
        }
    
        public FixedHeightUserControl()
        {
            InitializeComponent();
    
            this.Height = FIXED_HEIGHT;
        }
    }
    
    public class FixedHeightUserControlDesigner : ParentControlDesigner
    {
        private static string[] _propsToRemove = new string[] { "Height", "Size" };
    
        public override SelectionRules SelectionRules
        {
            get { return SelectionRules.LeftSizeable | SelectionRules.RightSizeable | SelectionRules.Moveable; }
        }
    
        protected override void PreFilterProperties(System.Collections.IDictionary properties)
        {
            base.PreFilterProperties(properties);
            foreach (string p in _propsToRemove)
                if (properties.Contains(p))
                    properties.Remove(p);
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)