如何禁止调整自定义控件的尺寸?

登登达次

登登达次

2016-01-29 12:59

如何禁止调整自定义控件的尺寸?,如何禁止调整自定义控件的尺寸?
有时我们在自定义控件时,出于某种原因的考虑(比如:防止在设计时误操作),想禁止调整自定义控件的尺寸(Height 或 Width)。最初我是这样实现的,这也是较简单的方法:public class MyButton : System.Windows.Forms.Button{... ... protected override void OnResize(EventArgs e) { this.Height = 23; this.Width = 75; }}  但是我对这样的效果不太满意,要是能实现像TextBox那样,在设计时上下边缘的小方块是灰的,而左右边缘的小方块是白的(表示无法调整其Height),那该有多酷!经过一番研究和到CSDN上求助,终于解决了此问题,效果如下图所示: 现在将代码整理出来,希望能对大家有所帮助。 1、建立自定义控件设计器类。/// /// 自定义控件设计器类/// public class MyButtonDesigner : System.Windows.Forms.Design.ControlDesigner{ public MyButtonDesigner() { } public override SelectionRules SelectionRules { get {//不允许调整控件的高度,具体说明详见MSDN。 SelectionRules rules = SelectionRules.Visible | SelectionRules.Moveable | SelectionRules.LeftSizeable | SelectionRules.RightSizeable; return rules; } }} 2、给自定义控件类添加属性,将该控件类与上面定义的设计器类关联起来。[Designer(typeof(MyButtonDesigner))]public class MyButton : System.Windows.Forms.Button{... ...} 经过以上处理,就实现了上述效果。不过如果再仔细研究一下,你会发现这只在设计时有效,而在运行时,还是能够改变该控件的高度。如何避免这个问题呢?请在相应位置加入以下代码(如有不清楚的地方请查阅MSDN)。public class MyButton : System.Windows.Forms.Button{... ... protected override void SetBoundsCore(int x, int y, int width, int height, BoundsSpecified specified) { base.SetBoundsCore(x, y, width, 23, specified); }} 最后提醒大家一下:要成功完成编译,必须添加System.Design引用,并在文件头部加上:using System.Windows.Forms.Design;

展开更多 50%)
分享

猜你喜欢

如何禁止调整自定义控件的尺寸?

电脑网络
如何禁止调整自定义控件的尺寸?

自定义 CRichEditCtrl 控件

C语言教程 C语言函数
自定义 CRichEditCtrl 控件

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

VC中自定义CRichEditCtrl控件

编程语言 网络编程
VC中自定义CRichEditCtrl控件

GridView控件自定义分页详解

Web开发
GridView控件自定义分页详解

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

自定义控件(可以动态加载用户控件)

电脑网络
自定义控件(可以动态加载用户控件)

如何在DataGrid控件中实现自定义分页

Web开发
如何在DataGrid控件中实现自定义分页

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

WebSerivce研究笔记

WebSerivce研究笔记

《放开那三国》物理输出的武将攻略

《放开那三国》物理输出的武将攻略
下拉加载更多内容 ↓