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

有时我们在自定义控件时,出于某种原因的考虑(比如:防止在设计时误操作),想禁止调整自定义控件的尺寸(Height 或 Width)。最初我是这样实现的,这也是较简单的方法:

public class MyButton : System.Windows.Forms.Button

{

... ...

protected override voidOnResize(EventArgs e)

{

this.Height = 23;

this.Width = 75;

}

}

  但是我对这样的效果不太满意,要是能实现像TextBox那样,在设计时上下边缘的小方块是灰的,而左右边缘的小方块是白的(表示无法调整其Height),那该有多酷!经过一番研究和到CSDN上求助,终于解决了此问题,效果如下图所示:

现在将代码整理出来,希望能对大家有所帮助。

1、建立自定义控件设计器类。

/// <summary>

/// 自定义控件设计器类

/// </summary>

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, intheight,

BoundsSpecified specified)

{

base.SetBoundsCore(x, y, width, 23, specified);

}

}

最后提醒大家一下:要成功完成编译,必须添加System.Design引用,并在文件头部加上:

using System.Windows.Forms.Design;

时间: 2024-11-13 08:40:25

禁止调整自定义控件的尺寸的相关文章

CFormView动态调整对话框的尺寸并成比例调整部署控件

基于单文档的CFormView动态调整对话框的尺寸并成比例调整部署控件 如果你正在开发基于单文档程序,使用了CFormView基类实现多个窗口的显示,那么这个文档可能会给你提供些许帮助. 一.实现对话框填充客户区 当我们添加了资源对话框时,它的尺寸在客户区显示时是不会随着窗口的大小调整的,当框架尺寸小于它的尺寸时,还出现了滚动条,操作麻烦同时视觉效果也不良好. 思路 根据客户区的大小调整资源对话框的大小,而客户区大小由父级的框架进行设定. 步骤 1. 根据屏幕分辨率设定框架的尺寸 请注意,我们不

调整图像的尺寸 - cvResize() 函数实现

前言 有时会碰到一张图片太大了,想将它缩小.本文将讲解一个很好用的函数解决这个问题. 图像尺寸调整函数 cvResize 1 // 图像尺寸调整函数 2 void Resize ( 3 const CvArr * src, // 待处理图像 4 CvArr * dst, // 处理后图像 5 int interpolation = CV_LINTER_LINTER //插值方法 6 ) 在调用此函数前,需要定制好处理后图像的格式,再将其内存块地址传入第二个参数:对于第三个参数可暂时不去理会,使用

微信字体大小禁止调整

1 (function() { 2 if (typeof WeixinJSBridge == "object" && typeof WeixinJSBridge.invoke == "function") { 3 handleFontSize(); 4 } else { 5 if (document.addEventListener) { 6 document.addEventListener("WeixinJSBridgeReady&qu

resizable可调整尺寸组件

Resizable 可调整尺寸不依赖于其他组件 1.用法:通过标记创建可调整尺寸(resizable)对象 <div class="easyui-resizable" style="width:100px;height:100px; border:1px solid #ccc;" data-options="maxWidth:800,maxHeight:600"> <div>使用js创建可调整尺寸(resizable)对象

应用程序所支持的屏幕尺寸AndroidManifest.xml文件详解(supports-screens)(转)

语法(SYNTAX): <supports-screensandroid:resizeable=["true"|"false"]                  android:smallScreens=["true" | "false"]                  android:normalScreens=["true" | "false"]             

调优3(share pool 调整)

第三章 share pool 调整 1.sga 组成部分 1)database buffer2)redolog buffer3)share pool :共享池,存放最近最常使用的sql和plsql语句及解析计划和数据字典信息---library cache: 存放最近最常使用的sql及plsql 语句和执行计划.解析代码(采用LRU算法)---Dictionary cache:存放最近最常使用的数据字典信息(表.字段.权限等)---uga :用户全局区(如果server process 是专有模

用微信浏览器调整字体后页面错位解决方案

普通解决方案: android暂无方案: ios使用-webkit-text-size-adjust禁止调整字体大小 body{-webkit-text-size-adjust: 100%!important;} 最好的解决方案: 整个页面用rem或者百分比布局 如果html5页面特效多比较,建议开启硬件加速: .css { -webkit-transform: translate3d(0, 0, 0); -moz-transform: translate3d(0, 0, 0); -ms-tra

ffmpeg调整缩放裁剪视频的基础

1. resize and scale video 调整视频的大小和尺寸 1-1.调整视频大小(resize)是改变视频的宽度和高度. 使用-s参数实现,语法:ffmpeg  -i  input_file  -s  wxh  output_file (wxh是宽x高,比如320x240)  调整视频的尺寸(scale)是改变帧的数量. 1-2.预定义的视频大小简写如下: 2.

【Visual Basic】列表控件ListView的增删改查、模态对话框、禁止窗口调整大小

列表控件ListView是窗体中核心组件之一,在各种窗体程序得到广泛应用.在<[mfc]学生信息管理,实现List控件节点的增删改查>(点击打开链接)中极其难以实现列表控件ListView的增删改查,在vb中可以轻松实现,下面举一个列子来说明这个问题. 如上图的一个ListView控件,点击"添加"按钮,在弹出的模态窗口,可以为ListView控件添加相应的项. 通过"删除"按钮可以删除选中的项.通过"修改"按钮,选中的项的值将会传递