C#让自定义控件只能调整宽度不能调整高度

来源:互联网 发布:淘宝聚划算报名 编辑:程序博客网 时间:2024/06/10 05:34

最近做一个项目需要用到自定义控件,主要控件是一个TextBox。做好以后,在界面上体验极差。因为没做控件大小的考虑,所以在界面上这个自定义控件可以随便更改其大小,导致文本框不能填充整个自定义控件的区域。在网上找了好多资料,有一个说直接重写控件的Size属性,我照着试了一下,完全不能满足我的要求。又找了好久,功夫不负有心人,终于找到我想要的东西。现在整理一下,分享给大家。

首先要添加引用System.Design。然后在文件头添加

using System.Windows.Forms.Design;

新建一个控件设计类

public class MyTextDesigner:System.Windows.Forms.Design.ControlDesigner    {        public MyTextDesigner()        {        }        public override SelectionRules SelectionRules        {            get            {                SelectionRules rules = SelectionRules.Visible | SelectionRules.Moveable                    | SelectionRules.LeftSizeable | SelectionRules.RightSizeable;                return rules;            }        }    }
将自定义控件与刚写的控件设计类联系起来

[Designer(typeof(MyTextDesigner))]    public partial class UserText : UserControl    {        public UserText()        {            InitializeComponent();        }...     }

这样也只是让界面编辑的时候不能更改控件大小,运行之后还是可以更改的。所以还需要在自定义控件中重写一个方法
[Designer(typeof(MyTextDesigner))]    public partial class UserText : UserControl    {        public UserText()        {            InitializeComponent();        }        protected override void SetBoundsCore(int x, int y, int width, int height, BoundsSpecified specified)        {            base.SetBoundsCore(x, y, width, 26, specified);        }...     }

其中的26即为你所要控制控件的固定高度。至此,这个自定义控件的高度就不能被更改了。


阅读全文
1 0
原创粉丝点击