「教えて!ピックアップ」リリース!

c#で質問が2つあります。
①numericUpDownを使っているのですが、アップダウンで値を変更すると、
Levelに同じ数字が反映されるという問題なのですが
直接numericUpDownに値を入力しても反映できるようにしたいです。
(なぜかアップダウンでの値でしか反映されないです。。)


②numericUpDownの値が何も入力されていない(空白)ときTextBoxが非表示というプログラムを作りたいです。
私が作ったのは
If (numericUpDown.Value<=0)
Text.Enabled=false;
と作成したのですが、うまくいきません。
numericUpDownのツールについてあまり知らないので教えてください。
よろしくお願い致します。
閉じる

2分前

A 回答 (3件)

NumericUpDown の Value プロパティは数値しか格納できない。


NumericUpDown コントロールのテキストボックス部分は数値しか入力できない。
スペースも入力できない。
Delete や Backspace は使える。
Delete や Backspace が使える関係で、入力途中にテキストボックスの入力値が一時的に空の状態になることは許されている。
NumericUpDown コントロールの値は Value プロパティで取得する。
テキストボックス部分に有効な数値が入力された状態で Enter が押されたり、フォーカスが外れると Value プロパティが更新される。(ただしテキストボックス部分が空文字の状態のままでは Value プロパティの値は変化しない)
Value プロパティの値が変化しないと ValueChanged イベントは発生しない。
という仕様です。

こういう状況ですので、テキストボックス部分を空文字にして Enter を押したりフォーカスを外しても ValueChanged イベントが発生しないため、他のテキストボックスを無効化するような処理を書くことはできません。

ただ、NumericUpDown コントロールには Text プロパティという非表示なプロパティがあります。 こいつはインテリセンスには出てきませんが使用することはできます。

また推奨されていませんが、TextChanged イベントもあるようです。
https://msdn.microsoft.com/ja-jp/library/system. …
この時のイベント発生順は
[TextChanged] ⇒ (テキストボックスの値が正しければ) [ValueChanged] となるようです。

手動で TextChanged イベントを追加してやれば、numericUpDown コントロールのテキストボックス部分を直接編集している最中にテキストボックス部分の変化をとらえられるようになるため、一時的に空文字になっている状態を利用することが可能になります。

Form1.cs
public Form1()
{
  InitializeComponent();
  this.numericUpDown1.TextChanged += new System.EventHandler(this.numericUpDown1_TextChanged);
}

private void numericUpDown1_TextChanged(object sender, EventArgs e)
{
  label1.Text = this.numericUpDown1.Value.ToString();
  textBox1.Enabled = !string.IsNullOrEmpty(numericUpDown1.Text);
}
    • good
    • 1
この回答へのお礼

ありがとうございます!
Enterを押すと文字が反映されるのですね!

お礼日時:2016/10/19 22:17

ありますよ、よく探してみてください



何も入力されていないというのであればnullを使ってください。
value == nullのような感じです。

あなたの条件式だと、0より下の数字、つまりマイナスの値の時の条件になってしまいます。

いま電車で思い出しながらやっているので、もしかしたらnull使えなかったかも...
試してみてください
    • good
    • 0
この回答へのお礼

わざわざありがとうございます!
nullでできました!

お礼日時:2016/10/19 22:18


TextChangedイベントを利用しましょう
名前の通り、テキストが変更された時に発生するイベントです。


値が何も入力されていないというのは、0の時ということですか?
テキストボックスいうのはもしかして、numericUpDownに付属しているやつのことを言っていますか?

ちょっと分かりづらいのでもう少し詳しく書いてください
    • good
    • 0
この回答へのお礼

回答ありがとうございます!
①numericUpDownのイベントにTextChangedがないのですが、、

②分かりづらくて申し訳ございません。
0ではなく、なにも入力されていない状態のことです。
テキストボックスは別のツールでnumericUpDownと連動させるものです。
numericUpDownが入力されていないときはTextBoxがEnabled(無効)になるというプログラムを作成したいです。

お礼日時:2016/10/18 22:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング