winforms - 如何让UserControl锁定到一定高度?

标签 winforms user-controls

不允许用户垂直调整 TextBox 控件的大小。 TextBox 的高度被锁定为文本框应有的理想高度。

此外,Visual Studio 甚至不为您提供垂直拖动 handle :

enter image description here

如何在我的UserControl上提供相同的机制?

最佳答案

我将详细阐述汉斯的评论。您可以将专用代码(称为设计器)与 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);
        }
    }
    

关于winforms - 如何让UserControl锁定到一定高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8348345/

相关文章:

c# - 以编程方式单击按钮 C#

C# WinForms ComboBox - 仅从对象中选择值

c# - 使用事件处理程序动态加载用户控件 - 注销

c# - 在 UserControl 内的 asp.net 标签上使用 AssociatedControlID

c# - 免费的高级下拉列表控件 (Windows Forms .Net)

c# - 使用 WPF 部分创建选项卡式侧边栏

c# - 带有内容模板的 ASP.NET 自定义控件

c# - C# 项目上的项目协作

c# - 生成一个 7 位数的数字,前面可以有零

c# - 如何在运行时移动 mousemove 上的控件?