質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.32%

ボタンイベント内の配列。

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 428

PG_Difficult

score 15

ネームスペース等は省略
     private void textBox2_Text(object sender, EventArgs e)
        {
            //入力禁止 
            textBox2.ReadOnly = true;

            //テキストボックス2の文字の大きさ変更
            textBox2.Font = new Font(textBox2.Font.FontFamily, 15);            
        }
    //テキストボックス1は入力された数字を表示するだけなので何もしない

      string[] text = new string[]
        {
            "配列1","配列2","配列3","配列4",
        };
        int index = 0;
    int count = 0;
        //ボタン13
        private void Button13_Click(object sender, EventArgs e)
        {
            if (count == 3)   //13ボタンを三回クリック(処理)をするとフォーム1に画面遷移する
            {  
                Form1 f1 = new Form1();
                f1.Show();
                this.Close();

            }        

            if (textBox1.Text == "110")
            {
                textBox2.Text = text[index];
                index++;            //ここ処理で配列1しか表示されない
            }

            else if (textBox1.Text == "111")
            {
                textBox2.Text = text2[index2];
                index2++;

            else
            {
                textBox2.Text = "該当しません";

            }
       //テキスト内消去
            textBox1.Text = String.Empty;
            count++;

        }

![イメージ説明
簡易的なものですが、一応参考に。
・理想
右側のテキストボックス数字を入力→ボタンをクリック→配列1表示→
左のテキストボックス内をクリックするたびに配列2、配列3順序よく切り替わって欲しい

・問題点
配列2~4を表示させるためには、何度も110と入力してボタンをクリックしなくてはならない。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • YAmaGNZ

    2019/07/15 20:44

    問題点と質問が繋がってません。
    というか、問題点の文がすでに意味不明です。

    キャンセル

  • Zuishin

    2019/07/15 21:49

    小さなテキストボックスに 110 あるいは 111 と入力してボタンを押すと、二種類ある配列のうちの一つが選ばれてその最初の要素が大きなテキストボックスに表示され、小さなテキストボックスの内容は消去される。
    続いて大きなテキストボックスをクリックすると、そのたびに以前の表示は消去されて選択済みの配列の次の要素が表示され、最後の要素が表示された後はクリックしても変化しない。
    ボタンを 3 回押すと次のフォームに遷移する。

    ということですか?

    キャンセル

  • PG_Difficult

    2019/07/16 09:39

    はい、合っています。
    紛らわしくて、すみません。

    キャンセル

回答 1

checkベストアンサー

+2

「110入力、クリック」をしなければなりません。これだと配列の中身が増えると大変
これをTextbox2内をクリックするだけで、どんどん配列1,配列2と表示させる方法

配列1と配列2を結合して添え字で取得してあげれば良いのではないでしょうか。

       int index = 0;
    int count = 0;
        //ボタン13
        private void Button13_Click(object sender, EventArgs e)
        {
            if (count == 3)   //13ボタンを三回クリック(処理)をするとフォーム1に画面遷移する
            {  
                Form1 f1 = new Form1();
                f1.Show();
                this.Close();

            }        

            var texts = new List<string>(text);
            texts.AddRange(new List<string>(text2));

            textBox2.Text = texts.ElementAt(index);
            index++;
       //テキスト内消去
            textBox1.Text = String.Empty;
            count++;

        }

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/07/15 22:07

    >左のテキストボックス内をクリックするたびに配列2、配列3順序よく切り替わって欲しい
    見落としていました。

    「配列2、配列3」は、textという名前の配列に入っている要素(「配列1」「配列2」という文字列のこと)を指していますよね。

    なら、左のテキストボックスにクリックイベントを追加して
    textBox2.Text = text[index];
    index++;
    と書けば良いのではないでしょうか。

    キャンセル

  • 2019/07/15 22:08 編集

    indexがtextの最大要素数を超えれば、index=0にするという論理も組む必要があります。
    配列の最大要素数はLengthプロパティから取得できます。

    キャンセル

  • 2019/07/16 09:49 編集

    上記のコード、配列の結合も初めて知ったので、そちらも参考になりました。
    ありがとうございます。

    最終的にはテキストのイベントハンドラにボタン13の条件(IF文)を丸ごとコピペしたら
    結果的にテキスト内クリックで順序よく切り替わったので結構単純な事でできました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.32%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る