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

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

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

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Q&A

解決済

4回答

2044閲覧

メッセージボックスと配列組み合わせ

PG_Difficult

総合スコア15

C#

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

0グッド

0クリップ

投稿2019/07/17 06:10

編集2019/07/17 06:43

c#

1ネーム等は省略 2string[] TEXT =new string[] 3"文章1","文章2","文章3","文章4",4private void textBox2_Text(object sender, EventArgs e) 5 {/*入力禁止*/ 6 //textBox2.ReadOnly = true; 7 8 9 if (textBox1.Text == "110") 10 { 11 textBox2.Text = text[index]; 12 index++; 1314 15 16 if (index == 7) 17 { 18 19 DialogResult result = MessageBox.Show("文章を入れる予定", 20 "選択", MessageBoxButtons.YesNo); 21 22 23 //何が選択されたか調べる 24 if (result == DialogResult.Yes) 25 { 26 textBox2.Text = text2[index2]; 27 index2++; 28 29              textBox1.Text = String.Empty; 30 //return; 31 } 32           if (result == DialogResult.NO) 33 {noに因んだ配列を入れる} 34 35 } 36 37 38 39 textBox2.Font = new Font(textBox1.Font.FontFamily, 12); 40 }

お世話になっております。
※メッセージボックスと配列組み合わせについての質問です。

最近配列の勉強をしてるのですが、メッセージボックスと配列を組み合わせた物を書いたのですが
思い通りに動かなくて、質問しました。

・やりたい事
今回は「YESを選んだらYESに因んだ文章」「NOならNOに因んだ文章」
を順序よく表示する様にしたい。

・問題点
上記のコードを実行すると結果は
文章1表示→メッセージボックス選択(YES)→文章2表示→メッセージボックス(YES)
→文章3表示→メッセージボックス(YES)→文章4表示
とこの様に毎回メッセージボックスを経由しなきゃいけません。

・理想
メッセージボックス選択(YES)→文章1表示→文章2表示→文章3表示・・・
とメッセージボックスは一回しか表示させないようにしたいです。

よろしくお願いいたします

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

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

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

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

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

BeatStar

2019/07/17 06:33 編集

言っていることが理解できません。 「順序よく表示する様にしたい」なのに、「メッセージボックスを一回だけしか表示させないようにする方法」っていうのが意味不明。 どういうこと? 順序よく出すなら数回メッセージボックスを表示することになりますが? あと、重箱の隅を楊枝でほじくるようだけど、 YSEじゃなくてYESね。
PG_Difficult

2019/07/17 06:50 編集

紛らわしくてすみません。 配列→(文章1~4)順序よく表示したい メッセージボックス→最初の一回のみ表示(処理) という意味です。 そしてそのメッセージボックスを数回表示されるのを一回だけしか表示させないようにする為にはどうしたらいいですか?という質問です。 YSEは後半から間違っていましたね。 ご指摘ありがとうございます。
fana

2019/07/17 07:03

文章が1つ表示される毎に,YES or NO の選択肢が発生する(展開が二分岐様になる)という話ではなく, 選択肢は最初の1回だけ(2パターンしかない)で良いという話なのですか?
PG_Difficult

2019/07/17 07:04

はい、最初の1回のみです。2パターンのみです。
PG_Difficult

2019/07/17 07:07

いつもお世話になっております。ZUISHINさん そうですね。結構英語のスペルミスは頻発していますね。
guest

回答4

0

(話の前提が違ったので,回答を分けます)

メッセージボックスを初回の意思決定にだけ用いるのであれば,
メッセージボックスを複数回表示するコードを書かなければ良いわけで,
つまり,単に,メッセージボックスを1回だけ使えばよい.

おそらく,問題は「複数の文章を時系列的に表示する方法」なのではないかという気がします.
そうであれば,簡単にはタイマとかを使えばよいのではないでしょうか.

  1. メッセージボックスで選択
  2. 選択結果を覚えておき,タイマを起動
  3. タイマイベント時に,選択結果と現在の進行状況に見合う文章を表示する

(全部表示したなら適切にタイマを止める.)

あるいは,もっと単純に文章を次に進めるためのボタンなりを1個設ける,とかでも良いような気がします.
(勝手に自動で表示が変わっていくのだと読み難い気がするし)

投稿2019/07/17 07:16

fana

総合スコア11654

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

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

Zuishin

2019/07/17 07:35

以前の質問で、テキストボックスをクリックするたびに次の文を表示する方法を聞いていました。なので本当ならこの問題は解決しているはずなんですが。
PG_Difficult

2019/07/17 08:19

ボタンイベント内の配列。 というタイトのものでしょうか? 今回は表示+メッセージボックス 今回の質問は前回の延長線ですね。
Zuishin

2019/07/17 08:20

延長線ではなく同じ問題に見えるんですよね。
PG_Difficult

2019/07/17 08:45

経験者にとって私の質問が全部同じに見えるのはしょうがないですよ。 私は初心者なので、何かが加わると私にしてみれば別の問題です。
PG_Difficult

2019/07/17 08:51

デバッグ•110入力 メッセージボックス 文章1 メッセージボックス ←これいらない 文章2 メッセージボックス ←これもいらない 文章3 メッセージボックス ←これもいらない 文章4 終了 デバッグ メッセージボックス 文章1 文章2 文章3 文章4 終了 本件はこれでどうですか?
guest

0

言いたいことがまだ理解できない...orz
...ん?
もしかして、メッセージボックスで表示するのって、textを使わない文字列ってこと?
例えば "ゲーム、開始しますか" -> yes -> 問題文表示...
の開始するか云々の。

それなら、「最初だけ表示する」っていう処理を加えるだけでいい。

基準がよくわからないので、妄想入りますが、

例えば、開始時は index = -1 としておいて、テキストボックスが入力された云々で、今回の処理だと思うので、

その時期に index の値をチェック。-1 であれば初期値のままなのでメッセージボックスを表示。
そして直後に indexをインクリメント ( i++ みたいなアレ )。

それ以降はindexは0以上になっているはずです。

なので、最初の index = -1 かどうかを調べるものはfalseになるので表示されない。

っていう風に。

きついこと、書きますが、
第三者に伝わるように」書くように心がけてください。
(と言いつつ、私も回りくどいといわれるが...orz)

私なら、

"問題を開始しますか" とメッセージボックスを出す -> 問題文1(例えば「第一次内閣総理大臣はだれか」等) -> ユーザが回答 -> 回答のチェック -> 問題文2 としたいが、回答のチェックと問題文2の間にメッセージボックスが表示されている。

とかみたいになるべく例を出す。

投稿2019/07/17 07:09

BeatStar

総合スコア4958

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

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

PG_Difficult

2019/07/17 08:35

そうですね。分かりやすくですね。 例とかそうですね。
guest

0

どうしたいのかよくわかりませんけど,
意思決定(YESかNOを選ばせる)手段としてメッセージボックスを使っているのが嫌という話であれば,
YESとNOのボタンをフォームなりに常備すれば良いのではないでしょうか.

投稿2019/07/17 06:28

fana

総合スコア11654

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

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

PG_Difficult

2019/07/17 06:54

メッセージボックスを使用しての勉強なので、 メッセージボックスを使わない、という事は今の所考えていません。 でもメッセージボックスの代わりにボタンも意外とアリですね。 今度使用してみます。
fana

2019/07/17 07:08

MEMO:この回答は,文章を1つ表示する度に毎回意思決定が発生する話だという認識の上で成されました.
guest

0

自己解決

C#

1bool first = false; 2if (first == false) 34 メッセージボックス 5   first = true; 67 else 8 { 9 textBox2.Text = text2[index2]; 10 index2++; 11 }

と最初の一度だけ表示する様にして
2回目は処理しないという事で解決したのですが。

それ以前に自分の日本語が伝わらないという事の方が衝撃を受けました。
色々回答してくれた方ありがとうございました。
これからはC#と共に日本語の勉強も頑張ろうともいます。(by日本人)

投稿2019/07/17 07:54

編集2019/07/17 07:55
PG_Difficult

総合スコア15

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

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

Zuishin

2019/07/17 07:56

いや、伝わらないというのはずっと前から言われてますが。意地悪されてただけと思ってました?
fana

2019/07/17 08:05

解決したようですが, 本件にて真に解決すべき課題とは何だったのか?というのが未だにわからない状態な私…
PG_Difficult

2019/07/17 08:31

意地悪というか、俺の説明そんなに分かりにくいのか? と毎回思っています。 長く書いてもわかりづらい。 短く書いてもわかりづらい。 もうお手上げですw
PG_Difficult

2019/07/17 08:53

デバッグ•110入力 メッセージボックス 文章1 メッセージボックス ←これいらない 文章2 メッセージボックス ←これもいらない 文章3 メッセージボックス ←これもいらない 文章4 終了 デバッグ メッセージボックス 文章1 文章2 文章3 文章4 終了 本件はこれでどうですか?fanaさん
fana

2019/07/17 09:34

要は,メッセージボックスを表示するコードが何度も走る処理の箇所に書いてあったから何度も出ていたという話ですよね. 質問文を読んだ際に,正直,そこが本件で解決すべき点なのだとは想像できませんでした. (失礼な物言いになってしまうかもしれませんが)自明すぎて,他に何か話を困難にする要素があるのだろう,と勝手に深読みした感.
fana

2019/07/17 09:37 編集

単純に2回目以降のメッセージボックスを無くしてしまうと,所望の動作でなくなる(例えば途中の文章が見えないとか)的な話なのかな,と.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問