NumericUpDownコントロールのテキスト領域を取得することは可能ですか?パネルでマスクできるサイズを探しています。ユーザーがテキストを編集して選択できるようにしたくありません。これは可能ですか?または、テキストボックスのテキストを隠す別の方法はありますか?
ありがとう。
NumericUpDownコントロールのテキスト領域を取得することは可能ですか?パネルでマスクできるサイズを探しています。ユーザーがテキストを編集して選択できるようにしたくありません。これは可能ですか?または、テキストボックスのテキストを隠す別の方法はありますか?
ありがとう。
手動編集を禁止したい場合は、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;
これは、組み込みの TextBox コントロールの代わりに Label コントロールを使用して取得できます。プロジェクトに新しいクラスを追加し、以下に示すコードを貼り付けます。コンパイル。ツールボックスの上部から新しいコントロールをフォームにドロップします。
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;
}
}
これを行う「適切な」方法は、アップダウン コントロールとラベルを作成することです (ラベルは選択または編集できません)。ただし、Windows フォームの作成者は、その無限の知恵により、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/
ReadOnly プロパティを true に設定します。これですべてです。