• 締切済み

【C++/CLI】コンボボックスの値を取得したい

VC++2005の.NETで言語はC++/CLIにてアプリを作成しています。 コンボボックスに下記値が挿入されています。 aaa bbb インデックス「1」を指定して、「bbb」の文字列を、 String型で取得したいのですが、方法が分かりません。 素人ながら、下記コードも試してみましたが、検討違いでした。 String^ str = this->cmbTest->GetItemText( 1 ); 初歩的な質問で申し訳ないですが、 方法をご存知の方、ご教示お願い致します。

みんなの回答

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

#1は、コンボボックスアイテムが文字列の場合を想定していますが、それ以外だとコケる可能性があります。 文字列かどうかわからない場合は、以下のコードの方がよいかも? String^ str = this->cmbTest->SelectedItem->ToString();

zigen8513
質問者

お礼

早急な御回答ありがとうございます。 この方法で文字列を取得できました。 どうもありがとうございました。

zigen8513
質問者

補足

すみません。下のお礼欄にて先にお礼を投稿させて頂いたのですが、 追加で補足させて頂いてよろしいでしょうか。 #1の方法だと、選択された値が取得できるのですが、 コンボボックスのインデックスを指定して、 例えば選択されていない、二番目の値を取得する方法はあるのでしょうか?

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

こんな感じでしょうか? String^ str = dynamic_cast<String^>(this->cmbTest->SelectedItem);

zigen8513
質問者

お礼

すみません。質問内容が紛らわしくなってきたので、 いったん締め切らせていただき、内容をまとめてから質問させていただきます。 御回答ありがとうございました。

zigen8513
質問者

補足

すみません。既に#1にてお礼を投稿させて頂いたのですが、 追加で補足させて頂いてよろしいでしょうか。 #1の方法だと、選択された値が取得できるのですが、 コンボボックスのインデックスを指定して、 例えば選択されていない、二番目の値を取得する方法はあるのでしょうか?

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

関連するQ&A

  • 【C++/CLI】コンボボックスの値と文字列比較、一致した場合インデックスを返す

    VC++2005の.NET、言語はC++/CLIにてアプリを作成しています。 コンボボックスの中に、下記値が入っているとします。 【コンボボックス】 aaa bbb ccc これらの値に対し、String型の変数に格納された文字列「bbb」で、 コンボボックスの中に入った値と比較していき、値が等しければ、 コンボボックスのインデックス(この場合は「1」)を返すという プログラムを作成したいのですが、そのような処理を実現させるような、 コンボボックスのメンバ関数、APIなどについてご存知の方おられましたら、 ご教示お願い致します。 下記に雛形を記載します。 String str; str = "bbb"; //ここにコンボボックスの中の値と順番に比較する処理 if ( 比較結果が等しい ) { //該当する値のインデックスを返す }

  • 【C++/CLI.NET】コンボボックスの値の設定・取得

    VC++2005の.NET、言語はC++/CLIでアプリを作成しています。 コンボボックスについて、質問が二点あります。 (1) コンボボックスのItemsプロパティにて下記値をセットし、 【セットした値】 aaa bbb ccc アプリ実行時に、コンボボックスの初期表示として、 二番目の値「bbb」を表示させたいのですが、 方法が分かりません。 (2) あるタイミングで、コンボボックスの現在選択されている値が、 何番目の値かを取得する方法が分かりません。 例)bbbが選択されているなら、二番目。 あと、当方.NET学習中であり、コンボボックスのような基本コントロールの使い方を解説したサイトや、 Tipsなど、おすすめサイトも一緒に教えて頂けると非常に助かります。 よろしくお願い致します。

  • VBA コンボボックス

    VBAコンボボックスで AAAを選択→処理A BBBを選択→処理B CCCを選択→処理C としている場合、 AAAを選択→処理Aの後、コンボボックスで再度AAAをクリックしても次の処理Aにいきません。いったんBBBをクリックしてしてAAAをクリックすると処理Aに行きますが、連続AAAをクリックして処理Aはできないでしょうか。 何か方法はありませんか? Private Sub ComboBox1_Change() If ComboBox1.Value = "AAA" Then   ’処理Aへ ElseIf ComboBox1.Value = "BBB" Then   ’処理Bへ Else   ’処理Cへ End If End Sub

  • 【C#】コンボボックスにおけるSelectionStart

    C#でツールを作っています。 テキストボックス内に書かれている文字列中にカーソルを置いて そのカーソル部分に任意の文字を挿入する処理に、TextBox.SelectionStart を使っています。 text_box.Text = text_box.Text.Insert(text_box.SelectionStart, string_word); text_box …テキストボックス名 string_word …挿入する文字 これを同じようにコンボボックスの中でもやりたいのですが ビルドエラーにはならないものの、上手く動作しません。 デバッグで見てみると、SelectionStart=0 となっており、 常にコンボボックス内の先頭に挿入されてしまいます。 コンボボックスでは無理なのでしょうか? MSDNライブラリでは、テキストボックスと変わらない説明がされているのですが… http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.combobox.selectionstart(VS.80).aspx

  • 【.NET】文字列の管理方法、メッセージボックスボタン名の編集について

    VC++2005の.NETでアプリを作成しております。言語はC++/CLIです。 いきなり複数の質問で申し訳ありませんが、二点質問があります。 (1) .NETでの文字列管理はどのように管理するのが理想的なのでしょうか? 例えば、MFCであればリソースビューのストリングテーブルで管理する方法がありましたが、 .NETではそれが見当たらなく、コード中に直接書くのも悪いような気がするので質問させて頂きました。 (2) メッセージボックスのボタン名を任意の文字列に変更するにはどうすれば良いのでしょうか? 例えば、下記コードで出現するメッセージボックスの、「OK」と「キャンセル」を、 文字列「aaa」「bbb」に変更する方法について、ご教示お願い致します。

  • 【C++/CLI】enumの値を使用するとデザイナが読み込めなくなる

    VC++2005の.NETにてアプリを作成しています。言語はC++/CLIです。 data.hに下記のような定義をしています。 【data.h】 namespace A { namespace B { enum class Hoge { aaa, bbb }; } } これを、Form1.hからヘッダファイルをインクルードして使用したいのですが、 下記のように記述すると、ビルド実行は可能なのですが、デザイナが読み込めなくなってしまいます。 【Form1.h】 #include "data.h" ・・・ using namespace A::B; ・・・ int hoi = (int)Hoge::aaa; //これを記述すると、デザイナが読み込めなくなる ・・・ この現象について、何か私の使用方法が間違っているのでしょうか? C++/CLI初心者のため、このようなことでつまづいてしまっています。 解決法をご存知の方おられましたら、ご教示お願い致します。 【デザイナのエラー内容】 デザイナの読み込み時に 1 つ以上のエラーが発生しました。エラーは以下に一覧表示されます。コードの変更が必要なエラーもありますが、プロジェクトを再度ビルドすると解決できるエラーもあります。 フィールド 'aaa' がターゲット オブジェクトで見つかりませんでした。フィールドがターゲット オブジェクトのインスタンス変数として定義され、また正しいスコープを含んでいることを確認してください。

  • グループボックス内のコンボボックスについて

    お世話になります。 WindowsXP / VC2005 / VC++ MFC / ダイヤログベースにて開発を行っています。 グループボックス内にコンボボックスを2つ配置しています。 コンボボックスにカーソルを合わせて、マウスホイールをスクロールした際、 ボックスの中身がスクロールしないのですが、スクロールする方法をご存知でしたら教えていただけないでしょうか? グループボックス外にコンボボックスを配置した場合では、ボックスの中身がスクロールされており、 再度グループボックス内にてプロパティを変更したりと試してみたのですが、思うように行きません。 よろしくお願いいたします。

  • excel2003 コンボボックスについて

    いつもお世話になります。 excel2003でコンボボックスを始めて使いたいと思います。 それで、下記のような事は出来ますか? 出来るのでしたら、その一番簡単な方法をお教え頂きたいです。 二つのコンボボックスを使って、 下記のようなデータを選びたいのです。 01 東京 aaa 東京タワー bbb 皇居 ccc 国会議事堂 02 大阪 aaa 通天閣 bbb 新地 ccc 漫才 03 名古屋 aaa キシメン bbb エビフライ ccc ミソカツ まず、最初のコンボボックスで 01 02 03を選び、 次のコンボボックスでは、例えば最初のコンボボックスで、 01 東京を選べば、 次のコンボボックスでは、01に関する下記だけが選べるようになる。 aaa 東京タワー bbb 皇居 ccc 国会議事堂 と言う具合には、出来ませんか? 上記のようになれば、 必ずしもコンボボックスを使わなくても良いのです。 なにぶん、初心者なので、申し訳ありません。 よろしくお願い致します。

  • コンボボックス中の語句のリンク

    最近、Visual Basicを必要性に駆られ初心者ですが作成しています。 フォームを作りコンボボックス等を配置したとこまでは良かったのですが、やはり行き詰ってしまいました。 質問は、コンボボックスで選んだ物をラベルかテキストボックスにリンクというか反映させるにはどうすればいいのでしょうか? Dim St As String 自分なりに、Stに代入させるのかと思って式を作りましたがエラーとなりました。この考え間違ってますか? 初歩の初歩的な質問ですみません。宜しくお願いします。

  • 【C++/CLI】文字列管理関数の作成

    VC++2005の.NET、言語はC++/CLIでアプリを作成しています。 String型の文字列を管理するクラスを作成しようと思います。 自分ではどのようなものを作成したいのか、イメージはついているのですが、 CLIの知識、技術が足りず、なかなか作成することが難しい状態です。 下記にイメージを記載しますので、有識者の方々アドバイス頂けませんでしょうか。 よろしくお願い致します。 文字列管理クラス「TextTbl」 【TextTbl.h】 enum { STR_TEST1, //格納したい文字列1のID STR_TEST2 //格納したい文字列2のID // ・・・   //ここに追加したい文字列のIDを追加していく } String^ getText( int id ); 【TextTbl.cpp】 // 文字列を取得する関数(引数は文字列のID) String^ TextTbl::getText( int id ) { //文字列のテーブルを定義する処理(文字列IDと文字列の文言が対になって定義されている) //IDを元に文字列を検索し取得する処理 return str; //検索した結果のString型文字列を返す }