- - PR -
comboBoxのText
1
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-04-26 13:54
VC#2005でcomboBoxを扱っております。
comboBoxに初期設定で4つ文字列をいれているのですが 初期表示がnullの何もないものが表示されます。 なので comboBox1.SelectedIndex = 0; を書いて一番最初の文字列を表示させるようにしているのです。 この一行をいれずにデザイン画面のプロパティで設定しようと Textに文字列を入れますがEnterを押すと消えてしまいます。 また、インデックス番号を入れるのかと思い0を入れてみましたが やはり消えてしまいます。 このTextはどういう場合に使用するのでしょうか? また、comboBox1.SelectedIndex = 0; を使わずにプロパティ画面で設定するにはどのプロパティを 使うのでしょうか? ご存知の方教えて頂けばありがたいです。 | ||||||||||||||||
|
投稿日時: 2008-04-26 17:22
TextBox + ListBoxの組み合わせ(Combo)で、入力か選択をしない限りは、 テキストボックス的にはnull参照となりますので、何も表示されないというのは、 テキストボックスとしての挙動としては自然です。 (ただし、.NET Frameworkの設計上の親クラスは、TextBoxではなく、 System.Windows.Forms.ListControl) ComboBoxの初期設定というのは、Itemsに4行分の文字列を入れている、という ことでいいでしょうか。 ComboBoxの場合は、ListBoxとは違って、Itemsにあるものは、テキストボックス部 へ入力するための候補、と考えると解りやすいです。
デザイン時のプロパティウィンドウにあるTextプロパティに文字列を いれようとしているけど、どうやっても入らない、ということでしょうか? こんなはずはないと思いVisualStudio2005のC#WinFormsで動作確認を してみましたが、やはり、私の環境では、Textに文字が入りました。 私のやったことか、環境が、質問者様のものとどこか違うのかもしれません。 確認していただきたいのですが、 ・System.Windows.Forms.ComboBoxではない、なにか別の、自作か、 サードパーティか、フリーなどのComboBoxということは無いでしょうか。 ・フォームの継承を使っていませんでしょうか。 ・Text入力後、(Form名).Designer.csを開いてみてください。 InitializeComponentメソッド中に(ComboBox名).Textに代入している行 はありますでしょうか?
Textに入れるのはインデックス番号ではなく文字列です。 ですが、文字列"0"も消えてしまうというのは不思議ですね。 私のところでは"0"も期待通りに設定することが出来ています。
ご期待されている使い方で合っていると思われます。 .NET開発->以前のバージョン->.NET Framework SDK 2.0->クラス ライブラリ リファレンス->System.Windows.Forms->ComboBoxクラス http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.combobox(VS.80).aspx _________________ たつごろー codeseek こみゅぷらす | ||||||||||||||||
|
投稿日時: 2008-04-26 19:38
たつごろーさん僕の下手な説明に親切に対応してくださってありがとうございます。
4つはItemsが4つということでございます。 それとcomboBoxは間違いなく System.Windows.Forms.ComboBox こちらでございます。 ちなみにたつごろーさんの返答の後自分なりに色々いじっておりましたところ DropDownStyleをDropDownListにしております。 これではなく、DropDownの場合は普通に入力できました。 これはこういうものなのでしょうか? DropDownListだとできません。 [ メッセージ編集済み 編集者: 未記入 編集日時 2008-04-26 19:39 ] | ||||||||||||||||
|
投稿日時: 2008-04-28 11:23
ご回答ありがとうございます。
はい。 こういうものです。 .NET開発->以前のバージョン->.NET Framework SDK 2.0->クラス ライブラリ リファレンス->System.Windows.Forms->ComboBoxクラス->DropDownStyle プロパティ http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.combobox.dropdownstyle(VS.80).aspx .NET開発->以前のバージョン->.NET Framework SDK 2.0->クラス ライブラリ リファレンス->System.Windows.Forms->ComboBoxStyle 列挙体 http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.comboboxstyle(VS.80).aspx より抜粋 「DropDownStyle プロパティを DropDownList に設定すると、リストから有効値 のみを選択できます。」 「DropDown テキスト部分は編集できます。」 とありますので、このときはリストにない値を入力することができません。 Textの値とリストの値は人間がみたときには文字列としては同一でも、内部的には 厳密には同じ値とは言えないとしているためか、入力できないように作られている ようです。 「DropDownStyle プロパティを DropDown に設定すると、ComboBox の編集できる 領域に任意の値を入力できます。」 「ユーザーはテキスト部分を直接編集できません。」 とありますので、このときはTextに任意の値を入れられます。 これは私の想像です。ComboBoxなのにListBoxと同等の挙動をするモードが用意 されているのは、はじめはユーザの自由な入力を許すComboBoxで設計していたけど、 後の仕様変更で、自由な値の入力を禁止してリストから選ばせようということになっ たときに、コントロールの張替えまではしなくともよいようになっているのではな いかなぁ。想像ですよ。 Itemsのうちどれか1つを選択状態にしたいとのことでしたので、調べてみましたが、 いまのところ、コードで行う以外の方法を見つけることが出来ませんでした。 どなたかご存知ではないですか? _________________ たつごろー codeseek こみゅぷらす | ||||||||||||||||
|
投稿日時: 2008-04-28 23:21
たぐごろーさん、詳しい説明ありがとうございます。
だめなんですね。 comboBox1.SelectedIndex = 0; これがプロパティにあれば済む話なのに・・・。 意外と何でもできそうで融通が利かないところもあるんですね。 参考になりました。 |
1