ここから本文です

C#を学習中です。buttonの非活性と活性について質問です。listBoxに値が入力された...

isw********さん

2009/5/1701:30:58

C#を学習中です。buttonの非活性と活性について質問です。listBoxに値が入力されたらbuttonが活性し、buttonが押せるようにしたいのですがどうしたらよいでしょうか?

閲覧数:
16,058
回答数:
2

違反報告

ベストアンサーに選ばれた回答

abi********さん

編集あり2009/5/1703:18:39

[活性/非活性について]


buttonの非活性は、

button1.Visible = false;


逆に、buttonの活性は、

button1.Visible = true;

です。




[初期状態の設定]


よって、まずはデザイン画面のフォームをダブルクリックして、Form1_Load()メソッドの枠組みを作り、下記のように記述して下さい。
Form1_Load()メソッドは、フォーム呼び出し時のイベントで起動するメソッドなので、各種の初期化処理を記述するのに便利です。
よって、このメソッドで、buttonの非活性の処理を記述して下さい。


private void Form1_Load(object sender, EventArgs e)
{

button1.Visible = false;

}



[SelectedIndexChangedイベント]


また、デザイン画面のlistBoxをダブルクリックして、listBox1_SelectedIndexChanged()メソッドの枠組みを作り、下記のように記述して下さい。
SelectedIndexChangedイベントは、listBoxの値を変更した時に発生するイベントです。
ここに、buttonの活性の処理を記述します。



private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{

button1.Visible = true;

}



[Enterイベント]

しかし、listBoxがアクティブ(動作状態)になった時点で発生するEnterイベントのほうが良い気がします。
そのイベントメソッドの枠組みを作成するには、まず、デザイン画面でlistBoxをクリックして、listBoxが選択された状態にして下さい。
その状態での「プロパティ」画面で、「プロパティ」画面内にある「イベント」ボタン(雷マークのボタン)をクリックします。
その状態での「プロパティ」画面では、イベントの一覧が表示されていますので、該当イベント(今回の場合はEnterイベント)を探して、それをダブルクリックして下さい。
これで、該当するイベントでのメソッドの枠組みが作成されます。


private void listBox1_Enter(object sender, EventArgs e)
{

button1.Visible = true;

}



[Leaveイベント]

逆に、listBoxからフォーカスが外れた時ならば、Leaveイベントです。
listBoxでの設定の次に、別のコントロールでの設定等がある場合は、フォーカスが外れた時のイベントでも良いと思います。
メソッドの枠組みの作り方は、Enterイベントで説明したやり方と同じです。


private void listBox1_Leave(object sender, EventArgs e)
{

button1.Visible = true;

}



[Validatedイベント]

これと同じ様なイベントでは、Validatedイベントがあります。
Validatedイベントは、listBoxが検証された時に発生します。
よって、値を入力するコントロールで、その入力が設定されたと検証された時に、何かの処理をさせたい場合、Validatedイベント、又は、oooValidatedイベント(oooは任意)を使います。
しかし、listBoxの場合においては、実際にやってみると、Leaveイベントも、Validatedイベントも、あまり変わり無いようです。
(他のコントロールで同一目的の場合は、Validatedイベントが良い場合が多いですが、listBoxの場合では、Leaveイベントと変わりない)



private void listBox1_Validated(object sender, EventArgs e)
{

button1.Visible = true;

}



実際に試して確認しながら、どのイベントが考えている仕様に合っているか検討して下さい。
なお、イベントの内容は、「プロパティ」画面の下方に、選択されているイベントの解説文が表示されています。
それを見て、実際に試して確認すると良いです。

ベストアンサー以外の回答

1〜1件/1件中

ttk********さん

2009/5/1712:37:30

先に大変詳しい回答がついているのですが、肝心なところが気になったので補足します。

表現の問題もあるでしょうが、活性、非活性だったら Visible じゃなくて Enabled だと思います。

Visible = false だと表示されなくなります。Enabled = false だとボタンがグレー表示状態になって押せなくなります。

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる