- ベストアンサー
VC# コンボボックスの大文字・小文字を区別する
VC# 2005で、以下のようなコードを書くと、大文字・小文字の区別がなく、 1行目で追加したアイテムが選択された状態になってしまいます。 comboBox1.Items.Add("a"); comboBox1.Text = "A"; 大文字・小文字を別として扱うことはできますでしょうか?
- みんなの回答 (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#ぢゃできないよ!」ってことだったらゴメンナサイ。
その他の回答 (2)
- reset_cat
- ベストアンサー率68% (94/138)
ComboBoxクラスから派生クラスを作成し、Textプロパティをオーバーライドして、Control.Textを直接呼び出すことで、設定したテキストをそのまま表示できるようです。 VC++.Netでは実現できたのですが、VC#だと実現できないのかな? できなかったらゴメンナサイ。
補足
ご回答ありがとうございます。 Control.Textを直接呼び出すというのはどのような記述になりますでしょうか? get { return base.Text; } set { base.Text = value; }
- oboroxx
- ベストアンサー率40% (317/792)
以下のコードですと区別はされています。 this.comboBox1.Items.Add("a"); this.comboBox1.Items.Add("A"); this.comboBox1.Text = "A"; つまり、推測するにMSが便利な機能をつけていてくれているという事ではないでしょうか。 ただより良くするには、どうやらASP.NETでのコンボボックスにはCaseSensitiveプロパティがあるようで、フォームアプリケーションでもつけてもらえればなという結論に・・・。
補足
そうなんですよね。googleで解決策を探している時にCaseSensitiveプロパティを 見つけたんですけど残念ながらVC#では使えなくてガッカリしました。 ご回答ありがとうございました。
お礼
今さらだけどControl.Textへのアクセス方法がわかったので やってみましたが、実現できませんでした。 ありがとうございました。