自定义控件之限制控件设计时改变大小

有的时候自定义控件,因为大小必须得固定,要不然可能不能满足绘制效果或者一些需求。于是就有限制改变大小的必要了。
1.添加引用system.design
然后添加一个自定义控件类

Imports System.Windows.Forms.Design
Imports System.ComponentModel
Public Class NonSizeablectrl
	inherits UserControl
    Private SetSize As New Size(100, 100)
    Public Overrides Property MaximumSize As Size
        Get
            Return SetSize
        End Get
        Set(value As Size)
            MyBase.MaximumSize = value
        End Set
    End Property
    Public Overrides Property MinimumSize As Size
        Get
            Return SetSize
        End Get
        Set(value As Size)
            MyBase.MinimumSize = value
        End Set
    End Property
End Class

如上我重写了最大值和最小值属性并且设置为长宽100
现在看一下效果:
在这里插入图片描述

目的是达到了,可是这样是不是还是有改变大小时的箭头,现在我们去掉它。

Public Class NoSizeableDesigner
Inherits ControlDesigner
 	 Public Overrides ReadOnly Property SelectionRules As SelectionRules
	        	Get
	        		  Return Windows.Forms.Design.SelectionRules.Moveable
	          	End Get
	  End Property
End Class
        	

如代码所示,继承一个controldesigner类,重写selectiorules,这个属性的作用是设计时移动控件的方式。
枚举有很多种
摘抄Msdn如下

字段功能
AllSizeable15指示组件支持在各个方向调整大小。
BottomSizeable2指示组件支持从底端调整大小。
LeftSizeable4指示组件支持从左边调整大小。
Locked-2147483648指示组件被锁定到其容器。 重写此枚举的 Moveable、AllSizeable、BottomSizeable、LeftSizeable、RightSizeable 和 TopSizeable 位标志。
Moveable268435456指示组件支持允许将它移动到屏幕上的位置属性。
None0指示没有特殊选择特性。
RightSizeable8指示组件支持从右边调整大小。
TopSizeable1指示组件支持从顶端调整大小。
Visible1073741824指示组件具有某种形式的可视用户界面并且选择服务正围绕此用户界面绘制选择边框。 如果所选组件具有此规则集,可假定此组件实现 IComponent,并且它与对应的设计器实例关联。

我现在选择的是只移动的方式,这样的话就可以消去四周的箭头
先把特性标记到控件头上

<Designer(GetType(NoSizeableDesigner))>
Public Class NonSizeablectrl

效果如图: 在这里插入图片描述
现在四周的点已经消去了,即使把鼠标放在上面也不会显示改变大小的箭头了。不仅是消去箭头,实际上即使没有上面Maxinumsize和Minisize的重写,我们一样在设计时无法改变大小,之所以要重写上面两个属性,是为了避免用户用代码改变大小。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值