c#WinForms可以获得NumericUpDown文本区域

是否可以获取NumericUpDown控件的文本区域? 我希望得到它的大小,以便我可以用面板掩盖它。 我不希望用户能够编辑和选择文本。 这可能吗? 或者是否有另一种方法来掩盖文本框中的文本?

谢谢。

您可以通过使用Label控件而不是带烘焙的TextBox控件来实现此目的。 在项目中添加一个新类并粘贴下面显示的代码。 编译。 将新控件从工具箱顶部拖放到表单上。

using System; using System.Windows.Forms; class UpDownLabel : NumericUpDown { private Label mLabel; private TextBox mBox; public UpDownLabel() { mBox = this.Controls[1] as TextBox; mBox.Enabled = false; mLabel = new Label(); mLabel.Location = mBox.Location; mLabel.Size = mBox.Size; this.Controls.Add(mLabel); mLabel.BringToFront(); } protected override void UpdateEditText() { base.UpdateEditText(); if (mLabel != null) mLabel.Text = mBox.Text; } } 

如果您不想手动编辑,只需将ReadOnly属性设置为true

 updown.ReadOnly = true; 

如果你也想禁止选择(我想知道为什么你需要这个),你可以使用reflection。 我不认为有更好的方法,因为字段upDownEditupDownEdit的内部字段。

 FieldInfo editProp = updown.GetType().GetField("upDownEdit", BindingFlags.Instance | BindingFlags.NonPublic); TextBox edit = (TextBox)editProp.GetValue(updown); edit.Enabled = false; 

将ReadOnly属性设置为true,即all。

“正确”的方法是创建一个Up-Down控件和一个Label(不能选择或编辑标签)。 然而,Windows Forms的作者以他们无限的智慧决定我们不需要Up-Down控件,因此他们没有提供.NET包装器。 他们认为我们想要一个Up-Down控件的唯一原因是与TextBox控件配对。

如果你想走这条路线,Up-Down控件很简单,可以创建一个光包装: http : //msdn.microsoft.com/en-us/library/bb759880.aspx

编辑1

[剪断]

编辑2

我在这里写了博客: http : //tergiver.wordpress.com/2010/11/05/using-the-up-down-control-in-windows-forms/