VC#での、複数コンボボックスへの処理を羅列しないで済む方法

このQ&Aのポイント
  • VisualC#(.NET Framework3.5)のプログラミングで、複数のコンボボックスとテキストボックスを処理する方法についての質問です。
  • コンボボックスとテキストボックスが10個あり、それらをファイルに書き出したい場合、羅列する代わりにループを使用する方法を教えてください。
  • 他にもお勧めの方法があれば教えてください。
回答を見る
  • ベストアンサー

VC#での、複数コンボボックスへの処理を羅列しないで済む方法

VisualC#(.NET Framework3.5)のプログラミングで以下ご存知の方が いればお願いします。 画面にコンボボックスが10個あり、それに付随するテキストボックスも10個あります。 これを全て、ファイルに書き出したと思っています。 その時に、以下のようにただ羅列すれば可能ではありますが、数が増えれば 増えるほど、羅列が長くなります。 たとえば、ループで回してオブジェクトへの参照を動的するといった方法 は無いのでしょうか? textFile.WriteLine(cmbNmae1.Text,txtName1.Text) textFile.WriteLine(cmbNmae2.Text,txtName2.Text) textFile.WriteLine(cmbNmae3.Text,txtName3.Text) それ以外の方法で、お勧めの方法がありましたら、 よろしくお願いします。 以上

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

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

Controlsから引っ張るなら ComboBox[] cb = new ComboBox[10]; TextBox[] tb = new TextBox[10]; for( int n = 0; n < cb.Length; n++ ) {   string ss = string.Format("cmbNmae{0}", n+1 );   if ( Controls.Find( ss, false).Length > 0 ) {     cb[n] = (ComboBox)Controls.Find( ss, false)[0];   }   ss = string.Format("txtName{0}", n+1 );   if ( Controls.Find( ss, false).Length > 0 ) {     tb[n] = (TextBox)Controls.Find( ss, false)[0];   } } といった具合で取り込んでみましょう

mappigoo
質問者

お礼

ありがとうございます。 うまくいきました。 感謝感謝です!

その他の回答 (1)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

一時的な配列を作ってしまうとか FormのControlsコレクションから引っ張るとかでしょう ComboBox[] cb = new CombBox[]{ cmbNmae1,cmbNmae2,cmbNmae3 }; TextBox[] tb = new TextBox[]{ TxtName1,TxtName2,TxtName3 }; for( int n = 0; n < cb.Length; n++ ) {   txtFile.WriteLine( cb[n].Text, tb[n].Text ); } といった具合で ・・・

mappigoo
質問者

お礼

Controlsコレクションから取得にしました。 ありがとうございます!

関連するQ&A

  • 複数のコンボボックスをforなどで扱う方法

    VIsualC++6.0 SDI でプログラムの勉強をしています。 コンボボックス1 コンボボックス2 コンボボックス3   ・   ・ のようなダイアログボックスがあり、 コンボボックスについては、一個一個メンバ変数を割り当て、初期化をしています。 m_combo1.SetCurSel(0); m_combo2.SetCurSel(1); m_combo3.SetCurSel(2); これを、for(int i=0; i < n; i++){ のような繰り返し文を使って書にはどうやったらよいのでしょうか? また他に方法があったり、考え方が根本的に違っているようならご指摘ください。 一先ず、初期化は一個一個書いて終わらせたのですが、 実際の処理では、複数あるコンボボックスのデータを順々に送信する。 送信し終ったらまたコンボボックス1のデータを送信・・・。 と、ストップボタンを押してスレッドを抜けるまで送信し続けると言う処理をさせたいのですが、 初期化のように出来ないため、質問させて頂きました。 よろしくお願いします。

  • テキストボックスとコンボボックス

    こんにちは、Accessのフォームにテキストボックスとコンボボックスを設置して、以下のような事ができないかと悩んでおります。 フォーム内には、テキストボックスとコンボボックスが設置してありまして、コンボボックス内にDB(会社名テーブル)から取得した全ての会社名が入っています。 しかし、そのレコード数が300件近くあるため、コンボボックス内から探し出すのに手間が掛かります。 そこで、コンボボックスの隣にテキストボックスを設置し、テキストボックス更新後に会社名テーブルの検索を行い、条件に合った会社名だけをコンボボックス内に入れることを考えているのですが、上手く行きません。 動作のイメージとしては下記のようになります。 (1)初期表示時はテキストボックス内に何も入力されていないので、全レコードがコンボボックス内に表示される。 (2)テキストボックスに「有限」と入力して、テキストボックスからフォーカスを移動させると、コンボボックス内に「有限」が会社名に含まれているレコードのみが入っている。 (3)テキストボックスを空白に戻すと、コンボボックス内には全レコードが表示 以上、どなたかご教授よろしくお願いします。

  • コンボボックス内のアイテムを選択してラベルを表示させるには?

    プログラミング初心者です。よろしくお願いします。 開発環境:XP HOME SP3 使用言語:VisualC# 使用ソフト:Visual Studio 2008 Professional コンボボックス内のアイテム選択すると、ラベルが最前面に表示させられるようにするにはどうすればいいでしょうか? コンボボックスはDropDownListにしています。

  • コンボボックスの高さを変更したい。

    こんにちは。 MFCでプログラムをしています。 コンボボックスを配置したのですが、高さを他のテキストボックス等を 合わせたいと思うのですがうまくいきません。 CComboBox::SetItemHeightでアイテムの高さを変更することで、コンボ ボックスの高さも変更されることは分かりました。 逆にコンボボックスのコントロールの高さが指定の高さになるように、 アイテムの高さを求めることはできないのでしょうか? もし解決方法がありましたら教えていただけないでしょうか。

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

    コンボボックスを2-ドロップダウンリストにすると「combo1.Text = ""」の命令が使えなくなるので2-ドロップダウンリストのままで「combo1.Text = ""」の命令が使えるようになる方法を教えてください。この命令がどうしても使用できない場合は、これと同じ動きをする命令を教えてください。

  • アクセスでのコンボボックス複数検索

    お世話になります ■判らないこと概要 アクセスで複数のコンボボックスの連結検索させ結果をサブフォームに 出す方法がわかりません。 ■参考 http://www.moug.net/tech/acvba/0060026.htm 上記の例は検索結果がテキストボックスになっていますがサブフォームが理想です。 ■追加機能 1、どのコンボボックスからでも検索できる 2、コンボボックスを一つでも選ぶとサブフォームが自動で絞り込んでいく 可能かどうかもわからず質問しております、わかるかたよろしくお願い申し上げます。

  • VBでコンボボックスをテーブルのように扱いたい

    VB.net 2010での質問です。 外部テキストファイルを読み込んで、フォーム上のコンボボックスに入れるのは簡単にできましたが、 ボタンを押したときに、選んだコンボボックスの該当データのうち一部だけを取り出して他データとからめつつ処理して表示させたいのです。 テキストファイルが以下のようになっています。データ件数は多くはありません。 阿部,北海道,10001,2001/05/01 山崎,東京都,11111,2003/09/25 ボタンを押した時には、別のテキストボックスに 山崎 - 10001 と表示させたいのです。贅沢を言えば、コンボボックスには人名のみが表示されるようにできれば素晴らしいです。 どうかよろしくお願いします。

  • コンボボックスで選択後重複結果を除く方法について

    VBA初心者ですが、苦戦しながら頑張っています。 以下についてご教示いただれば幸いでございます。 シートに以下のような表を準備しています。 (実際はもう少し量があり、定期的にデータを追加していきます。) 123456 ABACAA BCE HB CDF ID D G JE E ユーザーフォームにコンボボックスを3つ用意し、テキストボックスを10個 ほど準備しています。 まず最初に、ケースに応じて最大3個のコンボボックスを使用して、 コンボボックス1~3で列の番号(1~6)を選択します。 (ケースによっては、コンボボックスへの入力が1または2個の場合もございます。) その結果、テキストボックスに1~6に応じた結果(A~J)を表示させたいのです。 ここで、コンボボックスに入力した条件の結果表示の際、重複分を省く表示は可能でしょうか。 たとえば3つのコンボボックスを使用して、1と2と5を選択した場合、 テキストボックス上に、重複したアルファベットは表示しないようにしたい (結果として、ABCDEHIJをテキストボックス1~8に表示したい) のですが、どのようなコードの記述をすれば良いかわからず苦戦しております。 これまで、エクセル上、数式を組んでなんとかしのいでおりましたが、 かなりファイルが重くなって、メンテナンスも大変になったので、 VBAで対応できればと考えております。 ご教示くださいますよう何卒よろしくお願いいたします。

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

    こんにちは、Accessのフォームにコンボボックスを設置して、以下のような事ができないかと悩んでおります。よろしくお願い致します。 フォーム内には、部署名・氏名・住所・商品名など、クエリの列名をテキストボックスにて設置してあります。 フォーム内に別の(客先名専用)クエリでコンボボックスを設置し、コントロールソースには会社名を選択しています。 フォームビューでそのコンボボックスからひとつの会社名を選択すると、別の(客先名専用)クエリからでも、フォーム内にあるテキストボックス名と同じ列名であればテキストボックスに表示が可能ではないかと思っています。が、現在の状態だとコントロールソースで選択した会社名のみの表示だけです。どこかで設定する機能があるのか難しいVBでの設定しかないのか、それもわかりません。是非、この方法がおわかりになられる方ご教示下さいます様お願い致します。わかりずらい説明で申し訳ございませんが、よろしくお願い致します。

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

    ActiveXコントロールのコンボボックスについて質問です。 ListFillRangeに一番上に文字列・以下は日付の入ったセル(日付の書式はyyyy/mm/dd)を設定しています。 コンボボックスで選択する際にリストの表示は設定したセルの通りなのですが、日付を選択するとコンボボックスのテキストエリア?の表示が標準に(41172のように)なってしまいます。 これをyyyy/mm/ddのように表示することは可能でしょうか? プロパティのどこをどのようにしたら良いのでしょうか? お願いします。

専門家に質問してみよう