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

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

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

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

Q&A

解決済

4回答

9296閲覧

テキストボックスの初期化?更新?

退会済みユーザー

退会済みユーザー

総合スコア0

C#

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

0グッド

0クリップ

投稿2019/06/06 01:18

編集2019/06/06 02:32

こんにちは、何度も見かけている人またそれかと思っているでしょうw

C#

1textBox1.Text = "文章1"; 2textBox1.Text = "文章2"; 3textBox1.Text = "文章3";

クリック↓
イメージ説明

私のイメージでは
クリック
文章1
クリック
文章2
クリック
文章3
のはずなのですが、なぜでしょうか?

全部を順番に表示させる事ができるようしたいのですが
なにか方法はありますか?

C#

1 private void TextBox1_TextChanged(object sender, EventArgs e) 2 { 3 textBox1.Font = new Font(textBox1.Font.FontFamily, 14); 4 //文字の大きさを変更するコード 5 // textBox1.Text= TextMessage; 6 7 textBox1.Text = "文章1"; 8 //Refresh(); 9 textBox1.Text = "文章2"; 10 //Refresh(); 11 textBox1.Text = "文章3"; 12 //Refresh(); 13 14 15 16 Form3 f3 = new Form3(); 17 f3.Show(); 18 this.Close(); 19 }

クリックイベントの認識が完全ではなく今書いてるコードを乗せたのですが
プロパティのクリックアクションはTextBox1_TextChangedに設定して、
クリックで変わる様にしたはずです。
修正はこれで合ってますでしょうか?

あと検索などしてみてRefresh();で強制的に表示させるというのが書いてありまして、
行ってみたのですが早すぎて見えませんでした。↑に書いた//の部分です。
こちらも何か間違っているから早く表示されているのでしょうか?

https://social.msdn.microsoft.com/Forums/ja-JP/e2e8689a-621a-4186-945f-9acaee988061/form34920310342599123383123982635626032?forum=vbgeneralja

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

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

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

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

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

m.ts10806

2019/06/06 01:39

int a; a = 0; a = 1; a = 2; とやってることほぼ同じですが、「クリック」のイベントはコード上どこにありますか? ないのでしたらクリックイベント(なんのクリックかは知らないですが)を書いてください。
退会済みユーザー

退会済みユーザー

2019/06/06 02:32

修正をしてみました、どうでしょうか?
BluOxy

2019/06/06 03:42

>全部を順番に表示させる事ができるようしたい 前回の質問でその方法を説明しましたが、触れられる様子が無かったので非常に残念に感じます。 そもそも前回の質問にAppendTextを使う旨の回答にベストアンサーが選ばれていることが疑問です。 同じ質問をされるということは前回の質問が解決していないということと同じです。 ですから解決していない質問にはBAを選ばず、また内容が不明瞭な場合には同じ質問を立てるのではなく質問を修正して対処するようお願いします。
退会済みユーザー

退会済みユーザー

2019/06/06 04:13

先ほど確認させて頂きました。見逃していました、すみません。 そうですよね、これからは修正などで対応します。 これからは気を付けたいと思います。
guest

回答4

0

こんにちは。

確かにこれは初心者の頃あるあるな疑問だと思うので、せっかくなので長々と文を書きます。


プログラムは書いた処理を上から順に実行する、というのはちゃんと理解していると思います。
しかし、逆に言うと「プログラムは上から順にしか実行されない」ということでもあります。
あなたの書いた処理をあえて書き起こすと、

  1. まず、「textBox1.Text"文章1" を代入」し、
  2. 次に、「textBox1.Text"文章2" を代入」し、
  3. 最後に、「textBox1.Text"文章3" を代入」する

という処理を、一回の「一連の処理」として行っています。
この間に「クリック」などという動作は挟まっていませんし、挟まりません。
このコードが実行された結果、textBox1.Text には「"文章3" が代入された」という「結果」だけが残ります。
「クリックによって処理を進める」という動作を実現するには、根本的に考え方を変える必要があるのです。

クリックというのはプログラミングにおける一般概念である「イベント」に該当します。
イベントというのは、任意のトリガーによって何らかの処理を「呼び出す」ことが可能なもので、基本的にそれ以上のものではありません。
意図しているであろう「クリックする度に文章が置き換わる」という動作を実現するには、

  • 「クリックされる度に実行されてほしい一回分の処理」を用意
  • 処理が一回実行される毎に textBox1.Text を「次の 文章で上書きする」という動作を実装

とする必要があります。

このイメージを持った上で他の人の回答を読むと、それをどのように実現するのかについての回答であることが理解できるはずです。

投稿2019/06/06 02:54

編集2019/06/06 03:07
tamoto

総合スコア4105

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

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

m.ts10806

2019/06/06 03:10 編集

折角大事な考え方を書かれているのですから、せめて改行くらいはしてあげては・・・。
退会済みユーザー

退会済みユーザー

2019/06/06 03:08

回答ありがとうございます。 読んでいてストンと理解できました。 大変ですが、少しずつ理解しみます。 ありがとうございました。
tamoto

2019/06/06 03:09

すみません、投稿した後に見て直してました。
退会済みユーザー

退会済みユーザー

2019/06/06 03:11

いえいえ、大丈夫です。 ありがとうございます。
guest

0

ベストアンサー

TextBox1_TextChanged

これだとテキストボックスの内容が変更されたときに起きるイベントでは。→TextChanged
テキストボックス自体にClickイベントは確かなかったはずで、Enter(フォーカス時)はありますが、毎回フォーカスを外す必要があります。

ボタンのクリックイベントのほうが動作としては自然ですね。

あとは下記のように一気に流し込まないこと

C#

1textBox1.Text = "文章1"; 2textBox1.Text = "文章2"; 3textBox1.Text = "文章3";

変数は後勝ちなので、最後のものだけ残ります。
「一度表示」をさせたいのなら既に回答に出ているように配列に持っておいて
1回出すたびにindexを進めるのが良いでしょう。

投稿2019/06/06 02:44

m.ts10806

総合スコア80850

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

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

退会済みユーザー

退会済みユーザー

2019/06/06 02:54

回答ありがとうございます。 配列で順序よく表示させるという結論にたどり着きました。 ありがとうございます。
m.ts10806

2019/06/06 02:58

簡単にするなら配列 文言をコードに持たせるのが嫌なら設定ファイルかデータベースです。
退会済みユーザー

退会済みユーザー

2019/06/06 03:10

回答ありがとうございます。 データベースは習ったのですが、自分には難しく配列で行こうと思います。 ありがとうございました。
m.ts10806

2019/06/06 03:22

まあ、そこは要件次第ですね。データベースはほぼ必須の概念なので少しずつ覚えましょう。 コードに色々情報を持つのは決してメンテナンス性の観点で良いとは言えないので(毎回コンパイルしないといけませんし)
退会済みユーザー

退会済みユーザー

2019/06/06 03:38

わかりました。 少しずつですけど、覚えていきたいと思います。
guest

0

単純に上書きしてるだけなんで最後に書かれたものが残ってるだけですが。
なんでそこにクリックが入ってくるのか。。

投稿2019/06/06 01:23

y_waiwai

総合スコア87774

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

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

退会済みユーザー

退会済みユーザー

2019/06/06 01:28

上書きになるんですね。勉強になります。 クリックで次の文章を表示させるという仕様にしたいからです。
y_waiwai

2019/06/06 01:35

・順番に表示する文字列を配列に入れておく ・配列のインデックス用のint変数を用意 ・クリックイベントで、配列のインデックス番目を取り出してテキストボックスに代入、インデックスを+1
退会済みユーザー

退会済みユーザー

2019/06/06 02:34

最終手段として、配列でやってみたいと思います。 回答ありがとうございます。
guest

0

マウスのクリックイベントで、次の文章を流し込むようにしましょう。

投稿2019/06/06 02:15

takabosoft

総合スコア8356

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

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

退会済みユーザー

退会済みユーザー

2019/06/06 02:36

回答ありがとうございます。 そちらは具体的にはどのようにしたらいいでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問