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

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

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

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

Visual Studio

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

Q&A

解決済

3回答

1633閲覧

VS2019 C# コンソールで書いたコードをWindowsフォームでも行いたい

SsEe_egg

総合スコア19

C#

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

Visual Studio

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

0グッド

0クリップ

投稿2019/06/21 08:12

連続の質問失礼します。
うまく出力されず、困ってしまいました。
ご教示よろしくお願いします。

using System; class Test { public static void Main() { int x =int.Parse(Console.ReadLine()); for (int i = 1; i <= x; ++i) { Console.WriteLine(i); } } }

↑のコードをで実行すると、、、

5 ←ユーザーが任意で入力した数字
1
2
3
4
5

と出力されます。

これをWindowsフォームに変えてプログラムを動かしたいです。

テキストボックス1…ユーザーが任意の数字を入力
ボタン1…クリックでテキストボックス2に1から順に任意の数字が表示

↓テキストボックス2に表示されるイメージはこのような感じです
1
2
3
4

このとき、テキストボックス2には垂直のスクロールバーがつきます。
(プロパティで設定済み MultiLine→true、ScrollBars→Vertical)

自分が書いたコードは以下の通りです。

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApplication_Sample { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { try { int x = int.Parse(textBox1.Text); for (int i = 1; i <= x; ++i) { textBox2.Text = i.ToString(); } } catch { textBox1.Text = "不適切な入力です"; } } } }

このコードだと、数字は1から順番ではなく、テキストボックス1に入力された数字のみが表示されてしまいます。

どの箇所を訂正すればよろしいでしょうか??
教えていただけると幸いです。

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

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

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

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

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

guest

回答3

0

解決策ではないです。

csharp

1textBox2.Text = i.ToString();

の意味を考えましょう。これはテキストボックスの内容を「i」にする、の操作です。
高速で1にする2にする…とやって最後にテキストボックス1に入力した最後の値になるのでテキストボックス1の数字だけ出たように見えるだけです(実際はuiの更新を律儀にはしないので最後の数字になる、で現象としてもあってるとは思いますが)
少なくとも

csharp

1textBox2.Text += i.ToString();

くらいはやってみると、学びがあるかもしれません

投稿2019/06/21 08:25

papinianus

総合スコア12705

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

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

SsEe_egg

2019/06/23 03:17

返信遅くなってしまい申し訳ございません。 ご回答ありがとうございました。 textBox2.Text += i.ToString(); も試したところ、「12345」と表示しました。 考え方の部分まで丁寧に説明してくださりありがとうございました。 ここからうまく縦方向に「12345」が表示できるように工夫してみたいと思います。
SsEe_egg

2019/06/24 00:25

アドバイスありがとうございます。 こちらも参考にさせていただきます。
guest

0

ベストアンサー

textBox1.AppendTextメソッドを使いましょう

投稿2019/06/21 08:18

y_waiwai

総合スコア87719

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

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

SsEe_egg

2019/06/23 03:14

返信遅くなってしまい、申し訳ございません。 回答ありがとうございました。 試したところ、「12345」と表示しました。 ここから、縦方向に同じように表示させたいとおもいますので、もう少し自分で考えてみたいと思います。
y_waiwai

2019/06/23 03:25

他の方の回答にもありますが、なぜ前の方法ではダメなのか、また今回のメソッドではどういう動作をしているのか、というのを理解しましょう > ここから、縦方向に同じように表示させたいとおもいますので がんばってください。 どうしてもダメなときはまた聞いてくださればよろしいかと
SsEe_egg

2019/06/24 08:32

こんにちは。 縦方向に表示はエスケープ文字(\r\n)を使って解決することが出来ました。 解決の糸口をアドバイスしてくださり、ありがとうどざいました。 まだわからないところがたくさんあるので、勉強していきたいと思います。
guest

0

大ヒント

C#

1 for (int i = 1; i <= x; ++i) 2 { 3 textBox2.Text = i.ToString(); 4 }

これだとtextBox2.Textに何度も上書きしてるコードになってます。

投稿2019/06/21 13:11

gentaro

総合スコア8949

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

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

SsEe_egg

2019/06/23 03:31

返信遅くなってしまい申し訳ございません。 ご回答ありがとうございます。 大ヒントまで…本当にありがとうございます。 よく意味を考えてみようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問