C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[9]: Listをテキストボックス表示


(過去ログ 49 を表示中)

[トピック内 11 記事 (1 - 11 表示)]  << 0 >>

■26756 / inTopicNo.1)  Listをテキストボックス表示
  
□投稿者/ kick (1回)-(2008/10/20(Mon) 15:52:33)

分類:[C#] 

C#の初心者です。

リストの中の文字列を順にテキストボックスに表示したいのですが、ループを使うと一番最後しか表示されません。

失敗例:

     int po;
            for (po = 0; po < 10; po++)
            {
                richTextBox1.Text = List[po];
            }

インデックスの中を変えればよいのでしょうか?
また、リストの文字列の数を決めずに、毎回違う数に対応するようにしたいのですが、その記述方法も教えていただきたいです。
宜しくお願いいたしいます。

引用返信 編集キー/
■26761 / inTopicNo.2)  Re[1]: Listをテキストボックス表示
□投稿者/ カドルドエグ (45回)-(2008/10/20(Mon) 16:09:35)
2008/10/20(Mon) 16:16:10 編集(投稿者)
No26756 (kick さん) に返信
> リストの中の文字列を順にテキストボックスに表示したいのですが、ループを使うと一番最後しか表示されません。
> 
> 失敗例:
> 
>      int po;
>             for (po = 0; po < 10; po++)
>             {
>                 richTextBox1.Text = List[po];
>             }
> 
> インデックスの中を変えればよいのでしょうか?
これは単に「richTextBox1.Text」の中身をforの回数だけ(今回は10回)『上書き』しています。
一番最後しか表示されないのはそのためです。
それを避けるには、上書きではなく、回数分だけ「追加」する処理が必要です。

string result = String.Empty;

for文
{
  result = result + リスト内の文字列
}

テキストボックスのテキスト = result;

または
StringBuilder builder = new StringBuilder();

for文
{
  builder.AppendLine(リストの内容);
  // または
  // builder.Append(リストの内容);←但しこれだとただの羅列になるのでカンマ何かと一緒に追加した方がよいです
}

テキストボックスのテキスト = builder.ToString();
でも同じ結果が出せます。

因みに、処理の都合上こういった「追加」の処理はStringBuilderクラス(http://msdn.microsoft.com/ja-jp/library/system.text.stringbuilder(VS.80).aspx)で行った方が良いらしいです。

引用返信 編集キー/
■26762 / inTopicNo.3)  Re[2]: Listをテキストボックス表示
□投稿者/ 初心者 (158回)-(2008/10/20(Mon) 16:15:18)
>また、リストの文字列の数を決めずに、毎回違う数に対応するようにしたいのですが、その記述方法も教えていただきたいです。
>宜しくお願いいたしいます。


イテレータ使いましょう
http://www.microsoft.com/japan/msdn/thisweek/300x10/phase3/iterator/cs.aspx

引用返信 編集キー/
■26768 / inTopicNo.4)  Re[3]: Listをテキストボックス表示
□投稿者/ 純@WAS (18回)-(2008/10/20(Mon) 18:01:21)
リストとは具体的にどのようなものでしょうか??
ストリングの配列という認識で宜しいでしょうか?
それともカンマ区切り等の区切り文字を作成して配列化するのでしょうか?
引用返信 編集キー/
■26792 / inTopicNo.5)  Re[4]: Listをテキストボックス表示
□投稿者/ kick (2回)-(2008/10/21(Tue) 12:09:22)
No26768 (純@WAS さん) に返信
> リストとは具体的にどのようなものでしょうか??
> ストリングの配列という認識で宜しいでしょうか?
> それともカンマ区切り等の区切り文字を作成して配列化するのでしょうか?


説明不足ですみません。
カンマ区切りの「値段,商品名」のような文字列のリストです。
引用返信 編集キー/
■26804 / inTopicNo.6)  Re[5]: Listをテキストボックス表示
□投稿者/ Tram (8回)-(2008/10/21(Tue) 14:30:25)
カドルドエグさんの回答で既に答えは出ているような気もしますが・・・。

カンマ区切りの文字を分割して、リッチテキストボックスに縦に並べるイメージでよろしいでしょうか?
例えば
 値段,商品名,商品コード
これを
 値段
 商品名
 商品コード
といったかんじで。
この前提で回答します。
最初の投稿を見ると、カンマ区切りの文字列をString配列に格納する所までは出来ているように
見受けられますのでそこは省略します(Listの定義が見えませんが、String配列ですよね?)。
string[] List = new string[] { "値段", "商品名", "商品コード" };
richTextBox1.Text = string.Join("\n", List);
ただ単に縦に並べたいのであればこんな感じでもできますよという一例で。

引用返信 編集キー/
■26814 / inTopicNo.7)  Re[6]: Listをテキストボックス表示
□投稿者/ kick (3回)-(2008/10/21(Tue) 15:09:50)
たびたびすみません。
リストはList<string> syouhin = new List<string>();のかたちでテキストファイルから読み込んだものです。

リストの中は

0 商品A,600円
1 商品B,200円
2 商品C,800円
   ・
   ・  
   ・

のようになっており、これをそのままテキストボックスに

 商品A,600円
 商品B,200円
 商品C,800円
   ・
   ・  
   ・
と表示させたかったのですが、これはカドルドエグさんに教えていただいたとうりに出来ました。

成功例

      string go = string.Empty;

            for (int po = 0; po < 10; po++)
            {
                go = go + syouhin[po] + Environment.NewLine;
            }
            richTextBox1.Text = go;

しかし、リスト内の文字列は10個とは限らず、3個のときも、16個のときもあるのですべての数に対応させるには
この記述をどのようにしたらよいのでしょうか。
宜しくお願いいたします。



引用返信 編集キー/
■26818 / inTopicNo.8)  Re[7]: Listをテキストボックス表示
□投稿者/ Tram (10回)-(2008/10/21(Tue) 15:49:30)
No26814 (kick さん) に返信
> しかし、リスト内の文字列は10個とは限らず、3個のときも、16個のときもあるのですべての数に対応させるには
> この記述をどのようにしたらよいのでしょうか。
> 宜しくお願いいたします。

それも「イテレータ」とヒントが与えられているかと思いますが、
つまりはこんな感じです。
kickさんのコードを書き換えてみました。
string go = string.Empty;
foreach (string value in syouhin)
{
    go += value + Environment.NewLine;
}
richTextBox1.Text = go;
但し、このままだと最後に無駄な改行が入ってしまいますよ。

そして、String配列かな?という私の想定は外れましたが、
私が提示したやり方でもできます。
richTextBox1.Text = string.Join("\n", syouhin.ToArray());

引用返信 編集キー/
■26820 / inTopicNo.9)  Re[7]: Listをテキストボックス表示
□投稿者/ 魔界の仮面弁士 (878回)-(2008/10/21(Tue) 16:01:01)
No26814 (kick さん) に返信
> しかし、リスト内の文字列は10個とは限らず、3個のときも、16個のときもあるのですべての数に対応させるには
> この記述をどのようにしたらよいのでしょうか。

 // (案1) 改行無しで繋ぐなら…
 textBox1.Clear();
 syouhin.ForEach(textBox1.AppendText);

 // (案2) 項目ごとに改行するなら…
 textBox1.Text = string.Join(Environment.NewLine, syouhin.ToArray());

 // (案3) 項目ごとに改行するなら…
 StringBuilder sb = new StringBuilder();
 foreach (string item in syouhin)
 {
  sb.AppendLine(item);
 }
 textBox1.Text = sb.ToString();


案2 は、データとデータの間に改行が入ります。最終データの末尾には改行が入りません。
案3 は、各データの終わりに改行が入ります。最終データの末尾にも改行が入ります。
案1 は、そもそも改行が入りません。
引用返信 編集キー/
■26861 / inTopicNo.10)  Re[8]: Listをテキストボックス表示
□投稿者/ kick (4回)-(2008/10/22(Wed) 11:41:47)

ありがとうございました。
皆さんに教えていただいたことをすべて試しました。
とても勉強になりました。

魔界の仮面弁士さんの「案2」でいこうと思います。

ありがとうございました。



解決済み
引用返信 編集キー/
■26862 / inTopicNo.11)  Re[9]: Listをテキストボックス表示
□投稿者/ みきぬ (162回)-(2008/10/22(Wed) 11:48:46)
No26861 (kick さん) に返信
> 魔界の仮面弁士さんの「案2」でいこうと思います。
>
いや、本当はそれって元質問の「リストの中の文字列を順にテキストボックスに表示したい」の時点で決めておくべきことですよ?
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -