2013-06-26 47 views
0

我有一个10×10的文本框(其中100) 我写这篇文章的代码写入到文本文件:写入文本文件不匹配

foreach (Control control in Panel1.Controls) 
      { 


       var textBox = control as TextBox; 
       if (textBox != null) 
       { 
        if (string.IsNullOrEmpty(textBox.Text)) // ignore this 
        { 

         textBox.Style["visibility"] = "hidden"; 
        } 
        textBox.Enabled = false; 

        if (numberofCommas > 8) 
        { 
         stringWriter.Write(textBox.Text); 
         numberofCommas = 0; 
        } 
        else 
        { 
         stringWriter.Write("," + textBox.Text); 
         numberofCommas++; 
         recordsWritten++; 
        } 

        if (recordsWritten == 10) 
        { 
         stringWriter.WriteLine(); 
         recordsWritten = 0; 
        } 
        else 
        { 

        } 

从上面我想有10行在文本文件中有9个逗号,但是我在文本文件中有9行10个逗号,是我的代码逻辑错误?因为我一直在看它几个小时,我仍然无法解决它。对不起,如果我的逻辑不好,我是编程新手。

回答

1

我认为你应该在最后一步增加recordsWritten

if (numberofCommas > 8) 
{ 
    stringWriter.Write(textBox.Text); 
    numberofCommas = 0; 
    recordsWritten++; 
} 

这里是一个更好的方式来做到这一点使用LINQ:

var textBoxes = Panel1.Controls.OfType<TextBox>().Select((t, i) => new { TextBox = t, Index = i }).ToList(); 
foreach (var tb in textBoxes) 
{ 
    if (string.IsNullOrEmpty(tb.TextBox.Text)) 
     tb.TextBox.Style["visibility"] = "hidden"; 
    tb.TextBox.Enabled = false; 
} 

foreach (var line in textBoxes.GroupBy(e => e.Index/10) 
         .Select(e => 
          string.Join(", ", 
           e.Select(a => a.TextBox.Text).ToArray()))) 
    stringWriter.WriteLine(line); 
1

我不建议你使用100 TextBox对象,您可以使用DataGridView绑定到10行和10列的DataTable。您仍然可以编辑数据并将其保存到文件中。

尝试娄代码

StringWriter stringWriter1 = new StringWriter(); 
    DataTable dataTable1 = new DataTable(); 

    private void Form1_Shown(object sender, EventArgs e) 
    { 
     dataGridView1.AllowUserToAddRows = false; 

     int i; 

     for (i = 0; i < 10; i++) 
     { 
      dataTable1.Columns.Add("Column" + (i + 1), typeof(string)); 
     } 

     for (i = 0; i < 10; i++) 
     { 
      DataRow dataRow1 = dataTable1.NewRow(); 
      dataTable1.Rows.Add(dataRow1); 
     } 

     dataGridView1.DataSource = dataTable1; 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     string rowString = ""; 

     int i,j; 

     for (i = 0; i < 10; i++) 
     { 
      rowString = ""; 

      for (j = 0; j < 10; j++) 
      { 
       if (dataTable1.Rows[i][j].ToString().Contains(",") == true) 
       { 
        //Enclosing the field data inside quotes so that it can 
        //be identified as a single entity. 
        rowString += "\"" + dataTable1.Rows[i][j] + "\"" + ","; 
       } 
       else 
       { 
        rowString += dataTable1.Rows[i][j] + ","; 
       } 
      } 

      rowString = rowString.Substring(0, rowString.Length - 1); 
      stringWriter1.WriteLine(rowString); 
     } 
    } 

你只需要一个DataGridView添加到您的表格。