• ベストアンサー

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