0

NumericUpDownコントロールのテキスト領域を取得することは可能ですか?パネルでマスクできるサイズを探しています。ユーザーがテキストを編集して選択できるようにしたくありません。これは可能ですか?または、テキストボックスのテキストを隠す別の方法はありますか?

ありがとう。

4

4 に答える 4

4

手動編集を禁止したい場合は、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;
于 2010-10-30T15:15:55.740 に答える
3

これは、組み込みの 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;
    }
}
于 2010-10-30T16:01:40.217 に答える
1

これを行う「適切な」方法は、アップダウン コントロールとラベルを作成することです (ラベルは選択または編集できません)。ただし、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/

于 2010-10-30T15:24:04.387 に答える
1

ReadOnly プロパティを true に設定します。これですべてです。

于 2010-10-30T15:15:32.397 に答える