none
複数のText.Boxの値を順番通りに配列に格納したいです。 RRS feed

  • 質問

  • Visual Sutudio Community 2017 Version 15.7.2 windowsFormで作業をしています。

    Formに複数のText.Boxがあり、名前はText.Box1~の順番になっています。変数を配列で用意して

    閉じるときに下記の様に保存しています。

                Varu[1] = textBox1.Text;
                Varu[2] = textBox2.Text;
                Varu[3] = textBox3.Text;
                Varu[4] = textBox4.Text;

    配列同士のfor文の様に一気に入れたいくて検索しているのですが上手く行きません。

    どういった方法でやれば出来るのでしょうか。

    どうかよろしくお願いいたします。

    2019年1月15日 7:11

回答

  • 例えば、TextBoxが3つあって、TextBox1, TextBox2, TextBox3であれば、以下のコードでできます。

    var varu = new string[3];
    
    for (var i = 0; i < 3; i++)
    {
          var tb = (TextBox)Controls[$"TextBox{i + 1}"];
          varu[i] = tb.Text;
    }
    上記の$は文字列補完と呼ばれるものです。文字列補完で検索してみて下さい。


    ★良い回答には質問者は回答済みマークを、閲覧者は投票を!

    2019年1月15日 8:41
    モデレータ

すべての返信

  • 例えば、TextBoxが3つあって、TextBox1, TextBox2, TextBox3であれば、以下のコードでできます。

    var varu = new string[3];
    
    for (var i = 0; i < 3; i++)
    {
          var tb = (TextBox)Controls[$"TextBox{i + 1}"];
          varu[i] = tb.Text;
    }
    上記の$は文字列補完と呼ばれるものです。文字列補完で検索してみて下さい。


    ★良い回答には質問者は回答済みマークを、閲覧者は投票を!

    2019年1月15日 8:41
    モデレータ
  • Control.Textプロパティはvirtualなので、TextBox型にキャストしなくても値を取得できますよん。

    var varu = new string[3];
    
    for (var i = 0; i < 3; i++)
          varu[i] = Controls[$"TextBox{i + 1}"].Text;
    

    2019年1月15日 13:31
  • ありがとうございました。いきなり出来ました。今は検索と覚えるばかりの状態です。。。文字列補完は直接的でよいですね、他にの利用方法の考えてみたいです。
    2019年1月16日 1:06
  • ありがとうございます。先の方は(TextBox)で型キャストされていたのですね。virtualは少し見てみましたが今はちょっとよく分かりませんでした何となく”汎用” ”グローバル” 的な感じでしょうか。無くてもよいことは頭に入れておいて基本書くようにしておきます。
    2019年1月16日 1:10
  • Control.Textプロパティはvirtualなので、TextBox型にキャストしなくても値を取得できますよん。

    ありがとうございます。
    そうなんですね。それは知りませんでした。勉強になりました。
    質問者さんにもよりよい回答が示せて良かったです。

    ★良い回答には質問者は回答済みマークを、閲覧者は投票を!

    2019年1月16日 3:04
    モデレータ
  • 一つ注意。たまたま、Form 上に全ての TextBox があったから、できています。複数のコンテナ コントロールに分散していたら、工夫が必要です。

    Jitta@わんくま同盟

    2019年1月16日 11:07