- - PR -
Windowsフォーム コンボボックスで選択したら値を書き換える
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-03-17 11:28
コンボボックスでドロップダウンして選択した値(DisplayName)を表示するのでなく、(Valueの値を表示させたいのですが、以下のようにSelectedIndexChangedイベントでは値が書き換わりませんでした。
private void cbCode_SelectedIndexChanged(object sender, System.EventArgs e) { this.cbCode.Text = this.cbCode.SelectedValue.ToString(); } 横にボタンを作って以下のコードを実行すると、これはうまく書き換わります。 private void button1_Click(object sender, System.EventArgs e) { this.cbCode.Text = this.cbCode.SelectedValue.ToString(); } 値を入れているイベントの場所が悪いとなんとなく思っているのですが、どのタイミングで値をいれたらよいのかわかりません。 [ メッセージ編集済み 編集者: だいまる 編集日時 2005-03-17 11:28 ] |
|
投稿日時: 2005-03-17 12:16
回答ではありません。
試してみましたが、確かにSelectedIndexChangedイベント内でコンボボックスの Textプロパティを書き換えようとしても無効になりました。 当然ですが、SelectedIndexChangedイベントが発生すると、Textプロパティが 選択されたItemに変更されますよね。この動作と、イベント内での書き換えが競合して いるのでは?と思います。 コンボボックスの使い方として、選択されたItemを書き換えるようなことは普通しません。 近くにLabel等を配置して、Valueの値を表示させるほうが標準的といえます。 |
|
投稿日時: 2005-03-17 14:46
kanaiさんありがとうございます。
確かにそう考えると競合していますね。それをしてしまうとSelectedIndexChangedの作業そのものが否定されることになりますね。 確かにおっしゃる事が普通のやり方とは分かってはいるのですが、コンボボックスで普段はコード入力用なんだけど、名前を選択して選ぶこともできてその場合は、選択したらコンボボックスにはコードが入り、それに紐付けされた情報が、各ラベルに入るという事をしたかったのです。 やっぱり無理なのですかね。。 |
|
投稿日時: 2005-03-17 15:38
こんにちは。
安直な方法ですが、ComboBoxのエディット部分に ちょうど重なるようにTextBoxを重ねてやって、 それにValueを表示させるということもできると思います。 _________________ ant@MoF |
|
投稿日時: 2005-03-17 18:19
antさんなるほどこれは面白いやり方ですね!
思いつきませんでした その後考えたのですが、GrapeCityのNetAdvantageにUltraDropDownというのがあるのでそれを使うことにしました。 このシリーズはコントロールを加えただけでフォームが重たくなるから本音を言うとあまり使いたくないのですが。。ランタイムフリーだし便利な機能は多々あるので困ったときには使ってしまいます。 |
1