这是变量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在它之前有一个空行,它不应该是。
答案 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循环。