• ベストアンサー

VC# コンボボックスの大文字・小文字を区別する

VC# 2005で、以下のようなコードを書くと、大文字・小文字の区別がなく、 1行目で追加したアイテムが選択された状態になってしまいます。 comboBox1.Items.Add("a"); comboBox1.Text = "A"; 大文字・小文字を別として扱うことはできますでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • reset_cat
  • ベストアンサー率68% (94/138)
回答No.3

他に回答が付かないようですね・・・ VC++.Netだと、以下のオーバーライドをすることで実現できたのですが、VC#だとどういう記述になるのかがわからなかったので、#2の回答をしました。 public ref class ComboBoxTest : public System::Windows::Forms::ComboBox { public: ComboBoxTest() { } property String^ Text { virtual void set(String^ value) override { Control::Text::set(value); } } }; getのオーバーライドはいらないです。 「こんなオーバーライドC#ぢゃできないよ!」ってことだったらゴメンナサイ。

wds32862
質問者

お礼

今さらだけどControl.Textへのアクセス方法がわかったので やってみましたが、実現できませんでした。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • reset_cat
  • ベストアンサー率68% (94/138)
回答No.2

ComboBoxクラスから派生クラスを作成し、Textプロパティをオーバーライドして、Control.Textを直接呼び出すことで、設定したテキストをそのまま表示できるようです。 VC++.Netでは実現できたのですが、VC#だと実現できないのかな? できなかったらゴメンナサイ。

wds32862
質問者

補足

ご回答ありがとうございます。 Control.Textを直接呼び出すというのはどのような記述になりますでしょうか? get {   return base.Text; } set {   base.Text = value; }

全文を見る
すると、全ての回答が全文表示されます。
  • oboroxx
  • ベストアンサー率40% (317/792)
回答No.1

以下のコードですと区別はされています。 this.comboBox1.Items.Add("a"); this.comboBox1.Items.Add("A"); this.comboBox1.Text = "A"; つまり、推測するにMSが便利な機能をつけていてくれているという事ではないでしょうか。 ただより良くするには、どうやらASP.NETでのコンボボックスにはCaseSensitiveプロパティがあるようで、フォームアプリケーションでもつけてもらえればなという結論に・・・。

wds32862
質問者

補足

そうなんですよね。googleで解決策を探している時にCaseSensitiveプロパティを 見つけたんですけど残念ながらVC#では使えなくてガッカリしました。 ご回答ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • コンボボックスでデフォルト値の設定

    コンボボックスのデフォルト値を設定しようとして 以下のコードを書いたのですが、コンパイルがとおり ません。どうしたらよいでしょうか? private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) { //費目初期値 array<System::String^>^himokudata = { "通信費","光熱費","住居費" }; for (int i=0; i < himokudata->Length; i++) { comboBox1->Items->Add(himokudata[i]); } comboBox1->Text = comboBox1->Items->default; <---ここが通らない。textに表示されるデフォルト 値として通信費を入れたいのだが }

  • VB2008でコンボボックスのクリアについて

    VB2008でコンボボックスのクリアについて お世話になります。 コンボの設定を With ComboBox1 .Items.Clear() .Items.Add("a") .Items.Add("b") .SelectedIndex = 0 End With のようにしていた場合 ComboBox1.Items.Clear()を実行しても "a"の値がコンボに残るみたいなのですが、 指定の方法が悪いのでしょうか? .SelectedIndex = 0を指定しないと クリアされるみたいなのですが。 よろしくお願いいたします。

  • コンボボックスのドロップダウンで選択する文字列と選択後の文字列を変更し

    コンボボックスのドロップダウンで選択する文字列と選択後の文字列を変更したいです。 ComboBox1.Items.Add("ID : NAME") Private Sub ComboBox1_Validated(ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles ComboBox1.Validated ComboBox1.Text = "ID" End Sub これでコンボのフォーカスを外せば表示が"ID"になりますが、選択後は"ID : NAME"のままです。 イベント内で別のコントロールにフォーカスを当てようとしても無理でした。 なにか方法はないでしょうか? ownerdrawで複数列を持たせる方法でやりたいことはできるのですが、 この方法はわけあって避けたいと考えています。

  • コンボボックスのテキストを消さないようにするには?

    VB2005初心者です。よろしくお願いします。 ComboBoxプロパティをDropDownListに設定した状態で、Itemをオールクリアしても選択したItemのテキストを残す方法はありますか? ComboBoxプロパティをDropDownに設定するとItemは消えてテキストは残るのですが、DropDownListにすると両方とも消えてしまいます。 どうぞよろしくお願いします。

  • VisualBasic2010のコンボボックス

    VisualBasic2010のコンボボックスに関して質問です。 With ComboBox1   .Items.add("項目1")   .Items.add("項目2") End With のように、自身で項目を追加するのではなく、 ユーザのフォルダ配置情報を取得してコンボボックスに表示させるには、 どのようにすればよろしいでしょうか。 イメージとしては、WindowsXPで画像等を保存する場合にでる保存ダイアログ。 あれのコンボボックスのような感じです。

  • DataGridViewのコンボボックスについて

    DataGridViewのコンボボックスにおける初期インデックス値設定について  会社の用度管理に関するソフトを個人で作成しています。DataGridViewのコンボボックス でかなり悩んでおり、どなたか解決できる方がおられましたらご教示願います。 DataGridViewにてコンボボックスを「列の編集」時点で 作成し(columnType:DataGridViewComboBoxColumn)プログラム 段階で選択項目の準備をしています・・・・ --選択項目の準備------------------------------------------------ ※DataGridView名:GMN物品発注明細表 ※column名:処理選択 Dim column As New DataGridViewComboBoxColumn() 'ComboBoxのリストに表示する項目を指定 column.Items.Add("発 注") column.Items.Add("未発中") column.Items.Add("発注済") '"処理選択"列にバインドされているデータを表示 column.DataPropertyName = "処理選択" '"処理選択k"列の代わりにComboBox列を表示する GMN物品発注明細表.Columns.Insert(GMN物品発注明細表.Columns("処理選択").Index, column) GMN物品発注明細表.Columns.Remove("処理選択") column.Name = "処理選択" ------------------------------------------------------------------ ここまではいいのですが、表にデータを一行づつ挿入する際に「選択項目の準備」 にて作成したリストを行ごとに"発 注"・"未発中"・"発注済"の何れかを選択して 表示していきたいのです。行の挿入には --行の挿入処理------------------------------------------------------- ’行の挿入 GMN物品発注明細表.Rows.Add(New Object() {?,"1","2",・・・・・}) -------------------------------------------------------------------  「?」に何を指定すれば"発 注"・"未発中"・"発注済"の何れかを表示できるようになるか? お教え願えないでしょうか? GMN物品発注明細表.Rows.Add(New Object() {?,"1","2",・・・・・})の下に 「GMN物品発注明細表.Item(0, iRowCount).Value = "未発中"」 とかを追加してやると、Value値は"未発中"になりますが、表示されていない状況です。さらに インデックス値が分かるといいのですが。 ↓赤丸に初めから"発 注"・"未発中"・"発注済"の何れかを表示したいのですが・・・ 開発環境 Windows7/Xp等      VisualStudio2010

  • コンボボックスに関して

    開発環境:VB2008 教えて下さい。 コンボボックスを使用し、値を表示させ、選択されたらその選択された値を取得するという ような簡単なプログラムを作成していますが、列が複数列(2列)存在し、画面表示はそのうちの1列とし、 ある項目が選択された場合、その選択された値に対応するもう1列のコード取得するような場合は どのような記述をすれば良いでしょうか、、、 《例》 CMB_在庫管理.Items.Add("する") ・・・ コードとしては”0” CMB_在庫管理.Items.Add("しない") ・・・ コードとしては”1” 画面上には、する/しない という区分が現れ、するが選択された場合、0を取得し、 しないと選択された場合は1というコードを取得したい。  SelectedItemや、SelectedIndexで、値そのものや、何番目かという情報は取得できますが、  選択された値に対するコードを取得するには、、、 そもそも上記のような考え方は可能なのでしょうか、、、 初歩的な質問で申し訳ありませんが、教えて下さい。 よろしくお願いします。

  • ComboBoxのItem追加

    VB.NETでの開発初心者です。 ComboBoxのItem追加について、1行づつ追加していくのは理解できているのですが、HTMLでのListBox「OPTIONS設定」の様にArrayListにて一括追加する方法がわかりません。 ご存知の方、よろしくお願いします。  <1行づつ追加>  Me.ComboBox1.Items.Clear()  Me.ComboBox1.Items.Add(New ComboItems(Key値, 表示値))    ※ComboItemsクラスは、別途作成 <一括追加>  Dim comboArray As New ArrayList  comboArray.Add(New ComboItems(Key値, 表示値))  Me.ComboBox1.Items.???(comboArray) ← ここがわからない  

  • キューとコンボボックスの使い方  VB2008

    VB2008を使っています。 キューとコンボボックスの使い方がわからないのですが、以下のソースで (1)キューとデータソースを使う。 Dim queue As Queue = New Queue(20) For i As Integer = 0 to 9 queue.Enqueue( i.ToString() ) Next i ComboBox1.DataSource = queue.ToArray ComboBox2.DataSource = queue.ToArray (2)べたな方法 ComboBox1.Items.Clear() For i As Integer = 0 to 9 ComboBox1.Items.Add( i.ToString() ) Next i ComboBox2.Items.Clear() For i As Integer = 0 to 9 ComboBox2.Items.Add( i.ToString() ) Next i ------------------------ (1) (1)と(2)は厳密にどのように違うのでしょうか? (2) (1)で心配なのは、キューの上限を20にしていて、実際使っているのは10個で後は空です。 この状態で、コンボボックスのDataSourceにセットした場合、(2)と同じように10件だけになっているのでしょうか? (3) (1)は同じキューを使いまわしています。コンボボックス1と2は独立して使えるのでしょうか?(データは同じです。)

  • コンボボックスからテキストボックスへのデータ反映

    コンボボックスにてデータ(文字列+数字)を選択して、同フォーム内にある テキストボックスへ数字だけを表示させるにはどのようにコードを入力すれば良いでしょうか? VS2010を利用しています。 コンボボックスには、●●会社 00000000000 ▲▲会社 1111111111 といったように登録されております。 Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged TextBox1.Text = ComboBox1.Text End Sub 上記のコードですと、文字列+数字がテキストボックスへ反映されてしまいます。 お忙しい中お手数をお掛けしますが、ご教授下さい。