- - PR -
ListBoxコントロールのDisplayMemberプロパティについて
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-06-06 15:31
お世話になります。
いつも拝見させて頂いております。 当方,VC++.NET2003にて,ListBoxコントロールのDataSourceプロパティに DataSetオブジェクトをセットしたいのですが, ListBox上の表示が『System.Data.DataRowView』となってしまい困っています。 ListBoxのDisplayMemberプロパティを設定すれば,意図した表示になるのですが データソースに行追加を行なうと,再び表示が『System.Data.DataRowView』に 戻ってしまいます。 現在,取り敢えず,DataTableにDataRowChangeEventHandlerを追加して データソースが変更されるたびに,イベントハンドラで ListBoxA->DisplayMember = S"Message"; を実行して,ごまかしている状況です。 以下にコードを示します。 --------------------------------------------------------- [...省略] // データソースの設定 DataSet * dsMSG = new DataSet (S"DataSetName"); DataTable * dt = dsMSG->get_Tables()->Add (S"TableName"); DataColumn * dc = dt->get_Columns()->Add (S"Message"); dc->set_DataType (System::Type::GetType (S"System.String")); ListBox->set_DataSource (dsMSG->get_Tables()->get_Item(0)); ListBox->set_DisplayMember (S"Message"); [...省略] // データ追加部分 String * strMSG = S"message content"; DataRow * dr = dsMSG->get_Tables()->get_Item(0)->NewRow(); dr->set_Item (S"Message", strMSG); dsMSG->get_Tables()->get_Item(0)->get_Rows()->Add (dr); //この後にListBox->set_DisplayMember (S"Message")をしないと //意図した表示にならない? --------------------------------------------------------- データソースを編集する度に,表示側のプロパティを設定し直すというのが 気持ち悪いので何とかしたいのですが,マニュアルを見ても要領を得ず, 投稿させていただきました。 どなたかご存知でしたら御教授ください。 よろしくお願いいたします。 |
|
投稿日時: 2005-12-14 09:46
間があきましたが自己レスです。
ListBoxのSelectionModeプロパティをNoneに設定していると, 上述の事象が再現できるようです。 ただ,SelectionModeをOneなどに設定すると,選択行がハイライト表示されてしまいます。 ハイライト表示はしたくない場合,やはり上述のとおり ・SelectionMode=None ・テーブルにDataRowChangeEventHandlerを追加 ・ハンドラ内でDisplayMemberを毎回セット とするしかないのでしょうか? [ メッセージ編集済み 編集者: 奈良漬け 編集日時 2005-12-14 09:47 ] |
1