Winforms 如何将UserControl锁定到特定高度?
不允许用户垂直调整Winforms 如何将UserControl锁定到特定高度?,winforms,user-controls,Winforms,User Controls,不允许用户垂直调整文本框控件的大小。TextBox的高度被锁定为理想的文本框高度 此外,Visual Studio甚至不提供垂直拖动手柄: 如何在我的用户控件上提供相同的机制?我将详细阐述Hans的评论。您可以将专用代码(称为设计器)与UserControl相关联,以便将其放置在Visual Studio中的窗体上时,用户在配置控件的方式上受到限制 在项目中添加对System.Design的引用 使用以下示例代码: [Designer(typeof(FixedHeightUserControl
文本框
控件的大小。TextBox
的高度被锁定为理想的文本框高度
此外,Visual Studio甚至不提供垂直拖动手柄:
如何在我的
用户控件上提供相同的机制?我将详细阐述Hans的评论。您可以将专用代码(称为设计器)与UserControl相关联,以便将其放置在Visual Studio中的窗体上时,用户在配置控件的方式上受到限制
在项目中添加对System.Design
的引用
使用以下示例代码:
[Designer(typeof(FixedHeightUserControlDesigner))]
public partial class FixedHeightUserControl : UserControl
{
private const int FIXED_HEIGHT = 25;
protected override void OnSizeChanged(EventArgs e)
{
if (this.Size.Height != FIXED_HEIGHT)
this.Size = new Size(this.Size.Width, FIXED_HEIGHT);
base.OnSizeChanged(e);
}
public FixedHeightUserControl()
{
InitializeComponent();
this.Height = FIXED_HEIGHT;
}
}
public class FixedHeightUserControlDesigner : ParentControlDesigner
{
private static string[] _propsToRemove = new string[] { "Height", "Size" };
public override SelectionRules SelectionRules
{
get { return SelectionRules.LeftSizeable | SelectionRules.RightSizeable | SelectionRules.Moveable; }
}
protected override void PreFilterProperties(System.Collections.IDictionary properties)
{
base.PreFilterProperties(properties);
foreach (string p in _propsToRemove)
if (properties.Contains(p))
properties.Remove(p);
}
}
它有一个自定义设计器。重写ControlDesigner.SelectionRules属性。@IanBoyd-只需在用户中使textboxs多行属性为false(并锁定该属性)control@JeremyThompson我的用户控件
不包含文本框
-它是一个用户控件。你投入工作来回答问题,你得到+1并接受!请注意,设计器类可以改为继承而不是。这样做将为控件提供与非容器控件相同的“移动”光标-您可以通过单击并拖动控件(几乎)任何位置来移动控件,而不是像使用容器控件那样从某个图标/区域拖动。