- - PR -
[Windows C#.NET]TabControlに貼り付けたComboBoxの値の保持
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-01-07 15:56
遅れながら、あけましておめでとうございます。
本年もよろしくお願い致します。 えー、今年からC#.NET(しかもWinAP)を始めました。(昨年はVBでASP.NET) 早速ですが、 1.Form上にTabControlを配置し、TabPageを作成。 2.そのうち1つのTabPage上にComboBoxを配置。 3.実行してComboBoxのあるTabPageに移動。 4.ComboBoxから適当に選択(先頭項目以外)して別のTabPageに移動。 5.再びComboBoxのあるTabPageに移動。 とすると、選択値が保持されず先頭項目が表示されてしまいました。 ComboBoxのあるTabPageを表示する際に ComboBoxを再描画しているように見受けられたので、 ComboBoxのSelectedIndexChangedイベントで選択したIndexを変数に格納し、 TabControlのSelectedIndexChangedイベントでSelectedIndexに変数の値を設定して回避しました。 というわけで、今回は 「上記の回避方法より簡単に値を保持する方法はあるのか?」 「なぜ再描画されてしまうのか?(初期化されてしまうのか?)」 についてご教授頂きたく宜しくお願い致します。 #WebAPと勝手が違うので混乱してます・・・。
---------------------- VS.NET 2003 Windows AP(C#) ---------------------- 追記: ComboBoxのDropDownStyleプロパティは「DropDownList」に設定しています。 自分は先の回避方法で良いと思っているのですが、 どうなのでしょうか・・・ [ メッセージ編集済み 編集者: まゆりん 編集日時 2004-01-07 17:02 ] | ||||||||
|
投稿日時: 2004-01-07 17:09
そのようにしてみましたが、ちゃんと保持されています。VB.NETですけど。C#と挙動が違うのかな? #そういや、なんか、前にもにたような質問があったような? #C#で確認しようとしたら、Windows Formが作れないぞ?なんかいじったかな? #「歌って踊れる・・・」につっこもうと思ったのに | ||||||||
|
投稿日時: 2004-01-07 17:27
私のところ(VS.net 2002)でも確認しました。
ComboBoxのDropDownStyleがDropDownListの場合は、確かに保持されませんでした。 DropDownStyleがDropDownまたはSimpleの場合は表示は保持されているが、 SelectedIndexをとると保持されていませんでした。 Form1_Loadの中身を以下のように変更したら保持されるようになりました。
あるいは、ArrayListを使いたいのであれば
理由は・・わかりません。 [編集] 再現しましたが、もとのタブにもどったとき、先頭項目ではなく 非選択状態(SelectedIndex=-1)になりました。 [ メッセージ編集済み 編集者: べる 編集日時 2004-01-07 17:43 ] | ||||||||
|
投稿日時: 2004-01-07 17:28
Jittaさん、こんにちは。
Googleってみたんですが、同じような内容は見当たらなかったですねぇ。 ちなみにVB.NETはインストールしてないので確認出来ませんでした。 (ドライブの容量が少なくて・・・)
どーぞ遠慮なく突っ込んでください。 #入社した時に先輩が言っていたので強制的な目標です(笑) _________________ まゆりん@目標は歌って踊れるSE(笑) | ||||||||
|
投稿日時: 2004-01-07 17:33
まゆりんさん、Jittaさん、こんにちわ。諸農です。
今、Borland C#Builderの環境しかないのですが、 同じ事を試してみました。 再現できませんね。。 もしかしたらほかに原因要因があるのかもしれませんね。 -編集補足- ということでしたが、ListValueMemberを使ったら再現できました。 単純に文字をセットした場合とは違うようですね。 ではでは(^^)/ _________________ 諸農和岳 Powered by Borland Delphi/C++Builder & Microsoft VS.NET [ メッセージ編集済み 編集者: Jubei 編集日時 2004-01-07 17:38 ] | ||||||||
|
投稿日時: 2004-01-07 20:29
私のところでは再現出来ませんでした・・・
何でしょうねぇ。 コレ 一応バージョン情報を Microsoft Visual C# .NET 55607-652-0000007-18146 --編集-- あ、失礼しました。 DropDownStyleがDropDownList時は保存されませんねぇ・・・ DropDownList・・・保存されず DropDown・・・・・保存される むー。 [ メッセージ編集済み 編集者: kagura 編集日時 2004-01-07 20:32 ] | ||||||||
|
投稿日時: 2004-01-08 09:27
はじめまして、iStationです。
Microsoft Visual C# .NET 55607-652-0000007-18218 では、 DropDownList、DropDownとも保存されませんね... MSILをみると、 ((ArrayList)comboBox1.DataSource).Add(new ListValueMember("Item0",0));に対し、set_DataSource(object)ではなくてget_DataSource()が呼び出されています。 この辺が原因ではないでしょうか?! Microsoft Visual C# .NET 55607-652-0000007-18146 の DropDownList、DropDown設定時、各々のMSILを調べてみてください。 | ||||||||
|
投稿日時: 2004-01-08 10:35
MSILで見た結果ですがDropDown・DropDownList共に差異はなく
get_DataSourceが使用されています |