是否可以獲取NumericUpDown控件的文本區域?我正在尋找它的大小,以便我可以用面板來掩蓋它。我不希望用戶能夠編輯和選擇文本。這可能嗎?或者還有另一種掩蓋文本框中文本的方式?c#WinForms可以獲取NumericUpDown文本區域
謝謝。
是否可以獲取NumericUpDown控件的文本區域?我正在尋找它的大小,以便我可以用面板來掩蓋它。我不希望用戶能夠編輯和選擇文本。這可能嗎?或者還有另一種掩蓋文本框中文本的方式?c#WinForms可以獲取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,就是這樣。
如果您想要禁用手動編輯,您可以將ReadOnly
屬性設置爲true
。
updown.ReadOnly = true;
如果要禁止選擇太(我不知道爲什麼你需要這個),你可以使用反射。我不認爲有更好的辦法,因爲upDownEdit
是內部字段UpDownBase
。
FieldInfo editProp = updown.GetType().GetField("upDownEdit", BindingFlags.Instance | BindingFlags.NonPublic);
TextBox edit = (TextBox)editProp.GetValue(updown);
edit.Enabled = false;
'正確'的方法是創建一個Up-Down控件和一個Label(標籤不能被選中或編輯)。然而,Windows Forms的作者以他們的無限智慧已經決定我們不需要Up-Down控制,因此他們沒有爲它提供.NET包裝器。他們認爲我們想要一個Up-Down控件的唯一原因是與TextBox控件配對。如果你想要走這條路
上下控制是很簡單的創建一個輕包裝: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/
我做了一些挖掘,發現我的想法不會氾濫。我還發現Windows.Forms確實包含一個'UpDownButtons'控件,它被Numeric/DomainUpDown使用。它不是系統Up-Down控制的包裝,它是一個「從零開始」的實現。它也是內部的,所以你不能使用它。我認爲漢斯的解決方案很好。效率低下(使用3個控件,其中只需要兩個控件),但實現起來非常簡單。在'NumericUpDown'後面建立一個UpDownLabel控件的'正確的'解決方案有一點涉及。 – Tergiver 2010-10-30 18:21:18
更多信息(如果除我以外的任何人都感興趣):我們不能將系統Up-Down控件與具有內置遞增/遞減功能(UDS_SETBUDDYINT)的WinForms Label控件結合使用。原因是WinForm Label控件不是系統標籤控件的實例,而是它的另一個「從零開始」實現,它不響應由Up-Down控件使用的WM_SETTEXT消息。 – Tergiver 2010-10-30 20:25:03
這將允許用戶高亮數字。我想要那個殘疾人。 – MarkP 2010-10-30 15:21:26
然後,您應該考慮Tergiver告訴您什麼,您必須創建自定義控件,或者您知道可以創建UserControl並將NumericUpDown控件在文本框區域上放置一個標籤,並且每當NumericUpDownControl的ValueChanged觸發您更改標籤文本。 – 2010-10-30 15:29:25