如何仅从第二行添加一行空行?

时间:2015-04-20 15:06:54

标签: c# .net winforms

这是变量w是StreamWriter的代码:

var c = GetAll(this, typeof(ComboBox));
foreach (ComboBox cc in c)
{
    if (c.Count() == 1)
    {
        w.Write("ComboBox Name " + cc.Name + Environment.NewLine + Environment.NewLine);
    }
    else
    {
        w.Write(Environment.NewLine + "ComboBox Name " + cc.Name + Environment.NewLine + Environment.NewLine);
    }
    foreach (string ccc in cc.Items)
    {
        w.WriteLine("Classes " + ccc);
        CMBXWMICLASSES.Add(ccc);
    }
}

w.Close();

问题出在这个地方:

if (c.Count() == 1)
{
    w.Write("ComboBox Name " + cc.Name + Environment.NewLine + Environment.NewLine);
}
else
{
    w.Write(Environment.NewLine + "ComboBox Name " + cc.Name + Environment.NewLine + Environment.NewLine);
}

我想要的是,ComboBox Name的第一行只有在它之后才有空行。例如:

CombBox名称:daniel

这里的东西......在空行之后

然后在下一次有ComboBox Name时,它应该从两边添加空行:

这里的东西然后是空行:

ComboBox名称:sharon

空行后的东西

但我得到的是第一行写ComboBox Name之前的空行。

这就是我在文本文件中看到的内容:

空行

ComboBox名称cmbxOption

类Win32_1394Controller 类Win32_1394ControllerDevice 类Win32_BaseBoard

ComboBox名称cmbzxfdgdfg

类.... 类.... 类....

问题在于ComboBox cmxOption在它之前有一个空行,它不应该是。

1 个答案:

答案 0 :(得分:0)

问题是你要检查所有组合框的数量:

var c = GetAll(this, typeof(ComboBox));
foreach (ComboBox cc in c)
{
  // c.Count will return a count of all combo boxes in the collection
  // so this is only true if there is only 1 combo box.
  if (c.Count() == 1)

最简单的选择是使用标志或迭代器来检查你的位置:

var c =  GetAll(this, typeof(ComboBox));
bool handledFirst = false;

foreach (ComboBox cc in c)
{
  if (handledFirst)
  {
    // Most likely case first
    w.Write(Environment.NewLine + "ComboBox Name " + cc.Name +
            Environment.NewLine + Environment.NewLine);
  }
  else
  {
    // This is first time through, don't forget to set the flag
    w.Write("ComboBox Name " + cc.Name + Environment.NewLine +
            Environment.NewLine);
    handledFirst = true;
  }
  [...]
}

另一种选择是使用迭代器计数(声明int并每次递增它),或切换到标准for循环。