2017-01-15 12 views
0

私はC#と開発とWindowsフォームでのアプリケーションを使用しています、私の目的は、すべてのメッセージがデータベースに保存され、次にTXTで保存されるMySQL接続とのチャットです。foreachループの値をスキップするにはどうすればよいですか?

次に、TXTの各行にラベルを付けるダイナミックラベルを作成します。

1222 
22222 
Chat... 
fxckxd 
fxckxd 
fxck 
ffff 
cambio 
Chat...heya 
22222 
Xd 
Xd 
DDDD3EEEE 
DDDD 

あなたはforeachのは常に最初の値を印刷していることがわかります、私のTXTは15個の値を持って、私はそれをしたいと思います:

sql.sqlcmd("SELECT COUNT(*) FROM chat"); 
int count = int.Parse(sql.sqlcmd_answ); 

foreach (string line in File.ReadLines("mac.txt")) 
{ 
    int i = 0; 
    int p = 62; 
    while (i < count) 
    { 
     Console.WriteLine(line); 
     Label lb = new Label(); 
     lb.Text = line; 
     lb.Location = new Point(58, p); 
     p = p + 30; 
     panel1.Controls.Add(lb); 
     ++i; 
    } 
} 

ファイルは、これらの行を持っています各ラベルのTEXTはTXTの各行です。 http://image.prntscr.com/image/a1d36d25ae3d4948b765082250d8cb3b.png

+0

'count'の値は何ですか?あなたがそのループのために何度も何度も最初の価値を何度も何度も何度も何度も何度も何度も追加しているように思えます。 – Abion47

+0

ループ内で値を繰り返して、ループ内に不要なループを作成しています。 whileループ全体を完全に削除することができます。 –

+0

whileループを削除し、foreachループのConsole.WriteLineを試してみて、探しているものを達成するかどうかを確認してください。 –

答えて

1

これは、lineの値がinner whileループのライフタイム全体で同じであるためです。なぜあなたはwhileループが必要なのかわかりません。ファイル内の値を繰り返し処理するだけです:

int p = 62; 
foreach (string line in File.ReadLines("mac.txt")) 
{ 
    Console.WriteLine(line); 
    var lb = new Label() 
    { 
     Text = line, 
     Location = new Point(58, p) 
    }; 
    panel1.Controls.Add(lb); 
    p = p + 30; 
} 
関連する問題