- PR -

コンボボックスのデータソース変更結果を即時反映させる方法

投稿者投稿内容
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-03-17 19:25
引用:

囚人さんの書き込み (2006-03-17 19:11) より:
引用:

DataBind() が conboBox に無いようなんですが。


すいません^^;
Web フォームかと思いまして(Web に ComboBox はないですが)



恐縮です。
DataBindings というのは見つかったのですが。


[ メッセージ編集済み 編集者: R・田中一郎 編集日時 2006-03-17 19:39 ]
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-03-18 10:20
引用:

R・田中一郎さんの書き込み (2006-03-17 17:12) より:

しかし、一度表示したコンボボックスのデータソースを変更しても、選択肢が変わりません。
何かメソッドが用意されているのでしょうか?


そのイベントのタイミングの問題だと思います。
通常はそんなことしなくても変更できますから。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-03-31 11:30
引用:

じゃんぬねっとさんの書き込み (2006-03-31 10:54) より:

ところで、その ComboBox のスレッド、やっぱりタイミングの問題じゃないですか?
null で参照をいったん解放する必要があるように思えないんですよ。

と、続けるなら向こうのスレッドへ移動ですね...



ということで、こちらのスレッドに移動してきました。
以下が null で解放している部分です。

コード:
        private void selectedItems_Changed(object sender, EventArgs e) {
            this.listBox.DataSource = null;
            this.listBox.DataSource = this.selectedItems;
        }



SelectedItems クラスの持つコレクションの内容が変化した際に呼び出されるイベント
な訳ですが、先ほど、1行目の「this.listBox.DataSource = null;」をコメントアウ
トしてみたら、やはり画面上に新しいコレクションの内容が表示されなくなります。
上記だと正しく表示されるのです。
僕も、null で解放することで正しく表示される点について、どうも合点がいきません。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-03-31 11:45
引用:

R・田中一郎さんの書き込み (2006-03-31 11:30) より:

SelectedItems クラスの持つコレクションの内容が変化した際に呼び出されるイベント
な訳ですが、先ほど、1行目の「this.listBox.DataSource = null;」をコメントアウ
トしてみたら、やはり画面上に新しいコレクションの内容が表示されなくなります。
上記だと正しく表示されるのです。
僕も、null で解放することで正しく表示される点について、どうも合点がいきません。


先ほども申し上げましたように、タイミングの問題である可能性があります。
というのも私のミニマムコードでは再現しなかったからです。

とりあえず、適当に Button を配置してその Click イベントで実装するとどうなるか試して頂けませんか?

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
nanbu
大ベテラン
会議室デビュー日: 2004/08/19
投稿数: 178
投稿日時: 2006-03-31 12:30
null代入をコメントアウトすると、
DataSourceChangedイベントは発生しているのかな?

というか、
引用:

SelectedItems クラスの持つコレクションの内容が変化した際に呼び出されるイベント


って、、、同じインスタンス?
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-03-31 14:05
引用:

じゃんぬねっとさんの書き込み (2006-03-31 11:45) より:

とりあえず、適当に Button を配置してその Click イベントで実装するとどうなるか試して頂けませんか?



試してみたのですが、結果は同じでした。
コンボボックスの変更と共に、新しいデータを this.selectedItems にセットし、
ボタンを押すことで、this.listBox.DataSource = this.selectedItems; するように
してみた訳です。

引用:

じゃんぬねっとさんの書き込み (2006-03-31 11:45) より:

というのも私のミニマムコードでは再現しなかったからです。



妙なお話ですね。

#インストールされている Edition: C# Express
#Microsoft Visual C# 2005 76544-000-0000011-00126

これの違いでしょうか。


[ メッセージ編集済み 編集者: R・田中一郎 編集日時 2006-03-31 14:07 ]
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-03-31 14:13
引用:

nanbuさんの書き込み (2006-03-31 12:30) より:

null代入をコメントアウトすると、
DataSourceChangedイベントは発生しているのかな?



DataSourceChangedイベントは、どこが発行してくれるのでしょう?
nanbu
大ベテラン
会議室デビュー日: 2004/08/19
投稿数: 178
投稿日時: 2006-03-31 14:23
引用:

R・田中一郎さんの書き込み (2006-03-31 14:13) より:
引用:

nanbuさんの書き込み (2006-03-31 12:30) より:

null代入をコメントアウトすると、
DataSourceChangedイベントは発生しているのかな?



DataSourceChangedイベントは、どこが発行してくれるのでしょう?


奇妙な質問ですね、、

引用:

一度表示したコンボボックスのデータソースを変更しても、選択肢が変わ
りません。


とあったので、コンボボックスではないのですか?

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