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

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

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

1回答

632閲覧

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

PG_Difficult

総合スコア15

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2019/07/15 09:01

編集2019/07/15 12:01

C#

1ネームスペース等は省略 2     private void textBox2_Text(object sender, EventArgs e) 3 { 4 //入力禁止 5 textBox2.ReadOnly = true; 6 7 //テキストボックス2の文字の大きさ変更 8 textBox2.Font = new Font(textBox2.Font.FontFamily, 15); 9 } 10    //テキストボックス1は入力された数字を表示するだけなので何もしない 11 12      string[] text = new string[] 13 { 14 "配列1","配列2","配列3","配列4", 15 }; 16 int index = 0; 17    int count = 0; 18 //ボタン13 19 private void Button13_Click(object sender, EventArgs e) 20 { 21 if (count == 3)   //13ボタンを三回クリック(処理)をするとフォーム1に画面遷移する 22 {   23 Form1 f1 = new Form1(); 24 f1.Show(); 25 this.Close(); 26 27 } 28 29 if (textBox1.Text == "110") 30 { 31 textBox2.Text = text[index]; 32 index++;            //ここ処理で配列1しか表示されない 33 } 34 35 else if (textBox1.Text == "111") 36 { 37 textBox2.Text = text2[index2]; 38 index2++; 39 40 else 41 { 42 textBox2.Text = "該当しません"; 43 44 } 45       //テキスト内消去 46 textBox1.Text = String.Empty; 47 count++; 48 49 }

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

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2019/07/15 09:44

理解し辛い質問なので理解しやすく書いてください。
PG_Difficult

2019/07/15 10:26

そうですね。詳しく書こうとして逆に分かりづらくなりましたね。 修正しましたので、ご意見ありましたら又修正するのでよろしく お願いします。
Zuishin

2019/07/15 10:56

修正したのを見てもわかりません。
YAmaGNZ

2019/07/15 11:44

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

2019/07/15 12:49

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

2019/07/16 00:39

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

回答1

0

ベストアンサー

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

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

C#

1 int index = 0; 2    int count = 0; 3 //ボタン13 4 private void Button13_Click(object sender, EventArgs e) 5 { 6 if (count == 3)   //13ボタンを三回クリック(処理)をするとフォーム1に画面遷移する 7 {   8 Form1 f1 = new Form1(); 9 f1.Show(); 10 this.Close(); 11 12 } 13 14 var texts = new List<string>(text); 15 texts.AddRange(new List<string>(text2)); 16 17 textBox2.Text = texts.ElementAt(index); 18 index++; 19       //テキスト内消去 20 textBox1.Text = String.Empty; 21 count++; 22 23 }

投稿2019/07/15 12:08

BluOxy

総合スコア2663

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

BluOxy

2019/07/15 13:07

>左のテキストボックス内をクリックするたびに配列2、配列3順序よく切り替わって欲しい 見落としていました。 「配列2、配列3」は、textという名前の配列に入っている要素(「配列1」「配列2」という文字列のこと)を指していますよね。 なら、左のテキストボックスにクリックイベントを追加して textBox2.Text = text[index]; index++; と書けば良いのではないでしょうか。
BluOxy

2019/07/15 13:09 編集

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

2019/07/16 00:50 編集

上記のコード、配列の結合も初めて知ったので、そちらも参考になりました。 ありがとうございます。 最終的にはテキストのイベントハンドラにボタン13の条件(IF文)を丸ごとコピペしたら 結果的にテキスト内クリックで順序よく切り替わったので結構単純な事でできました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問