C#自绘控件外形



本文主要介绍修改C#工具箱中各控件的外形,此方法可以将矩形的按钮、文本框、编辑框等修改成圆形、多边形等

以下是操作步骤:

1、将控件从工具箱拖入视图设计区域(也可手动创建)

2.在Load函数中添加以下代码:

   GraphicsPath myPath = new GraphicsPath();//创建路径对象
    myPath.AddEllipse(0, 0, 50, 50);//绘制圆形路径(绘制函数可选System.Drawing.Drawing2D下的所有绘制函数)(注意:新绘制的控件大小要小于原控件)

     this.button1.Region = new Region(myPath); //将路径绑定到控件


就这么简单两步绘制自定义外形控件,而且新绘制的控件基本上具有原先控件的所有属性

### C# 用户控件防止垂直调整大小的解决方案 为了防止用户控件C#应用程序中被垂直调整大小,可以通过重写 `WndProc` 方法来拦截并处理窗口消息。具体来说,当接收到与调整大小有关的消息时,可以选择忽略这些消息从而阻止控件的高度发生变化。 对于Windows窗体应用中的自定义控件而言,在类内部实现如下逻辑能够有效达到目的: ```csharp protected override void WndProc(ref Message m) { const int WM_SIZING = 0x214; // 如果是WM_SIZING消息,则进一步判断方向 if (m.Msg == WM_SIZING) { RECT rect = Marshal.PtrToStructure<RECT>(m.LParam); switch ((WMSizing)m.WParam.ToInt32()) { case WMSizing.SIZE_TOP: case WMSizing.SIZE_BOTTOM: case WMSizing.SIZE_TOPLEFT: case WMSizing.SIZE_TOPRIGHT: case WMSizing.SIZE_BOTTOMLEFT: case WMSizing.SIZE_BOTTOMRIGHT: // 阻止高度变化 rect.bottom = originalHeight + rect.top; // 假设originalHeight是在初始化时保存下来的原始高度 Marshal.StructureToPtr(rect, m.LParam, false); break; } } base.WndProc(ref m); } ``` 上述代码片段通过捕获特定类型的调整操作(即涉及顶部或底部边界的操作),强制将新的矩形区域设置回原来的尺寸[^1]。需要注意的是,这种方法适用于WinForms环境下的开发场景;如果是其他框架如WPF,则需采用不同的策略来进行类似的控制。 另外一种更为简单的方法是直接禁用整个控件的调整功能。可以在设计阶段就设定好固定大小属性,并取消允许用户改变其外形的行为选项。不过这种方式较为粗暴,可能会影响用户体验灵活性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值