- PR -

Windowsフォーム コンボボックスで選択したら値を書き換える

1
投稿者投稿内容
ポテチ
ベテラン
会議室デビュー日: 2003/03/28
投稿数: 69
投稿日時: 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 ]
kanai
ベテラン
会議室デビュー日: 2004/09/13
投稿数: 98
投稿日時: 2005-03-17 12:16
回答ではありません。

試してみましたが、確かにSelectedIndexChangedイベント内でコンボボックスの
Textプロパティを書き換えようとしても無効になりました。

当然ですが、SelectedIndexChangedイベントが発生すると、Textプロパティが
選択されたItemに変更されますよね。この動作と、イベント内での書き換えが競合して
いるのでは?と思います。

コンボボックスの使い方として、選択されたItemを書き換えるようなことは普通しません。
近くにLabel等を配置して、Valueの値を表示させるほうが標準的といえます。
ポテチ
ベテラン
会議室デビュー日: 2003/03/28
投稿数: 69
投稿日時: 2005-03-17 14:46
kanaiさんありがとうございます。

確かにそう考えると競合していますね。それをしてしまうとSelectedIndexChangedの作業そのものが否定されることになりますね。
確かにおっしゃる事が普通のやり方とは分かってはいるのですが、コンボボックスで普段はコード入力用なんだけど、名前を選択して選ぶこともできてその場合は、選択したらコンボボックスにはコードが入り、それに紐付けされた情報が、各ラベルに入るという事をしたかったのです。
やっぱり無理なのですかね。。
ant
常連さん
会議室デビュー日: 2004/03/24
投稿数: 44
投稿日時: 2005-03-17 15:38
こんにちは。

安直な方法ですが、ComboBoxのエディット部分に
ちょうど重なるようにTextBoxを重ねてやって、
それにValueを表示させるということもできると思います。
_________________
ant@MoF
ポテチ
ベテラン
会議室デビュー日: 2003/03/28
投稿数: 69
投稿日時: 2005-03-17 18:19
antさんなるほどこれは面白いやり方ですね!
思いつきませんでした
その後考えたのですが、GrapeCityのNetAdvantageにUltraDropDownというのがあるのでそれを使うことにしました。
このシリーズはコントロールを加えただけでフォームが重たくなるから本音を言うとあまり使いたくないのですが。。ランタイムフリーだし便利な機能は多々あるので困ったときには使ってしまいます。

1

スキルアップ/キャリアアップ(JOB@IT)