C# 创建要在messagebox中显示的返回结果数组
我有一个方法,它向用户返回一个显示结果的messagebox。但对于多个结果,每个结果都会显示一个消息窗口。我如何创建它,以便将结果放入一个数组中,然后在最后将所有结果显示在一个messagebox中给用户C# 创建要在messagebox中显示的返回结果数组,c#,winforms,C#,Winforms,我有一个方法,它向用户返回一个显示结果的messagebox。但对于多个结果,每个结果都会显示一个消息窗口。我如何创建它,以便将结果放入一个数组中,然后在最后将所有结果显示在一个messagebox中给用户 foreach (KeyValuePair<string, int> kvp in Comparer) { if (kvp.Value != 0) {
foreach (KeyValuePair<string, int> kvp in Comparer)
{
if (kvp.Value != 0)
{
mismatches++;
string InWhich = kvp.Value > 0 ? firstFile : secondFile;
MessageBox.Show("Extra value \n"+kvp.Key+" \nfound in file " + InWhich);
if (Math.Abs(kvp.Value) != 1)
MessageBox.Show( Math.Abs(kvp.Value)+ "times");
}
}
使用StringBuilder在循环中构建字符串,如下所示:
System.Text.StringBuilder theStringBuilder = new System.Text.StringBuilder();
foreach (KeyValuePair<string, int> kvp in Comparer)
{
if (kvp.Value != 0)
{
mismatches++;
string InWhich = kvp.Value > 0 ? firstFile : secondFile;
theStringBuilder.AppendLine("Extra value \n"+kvp.Key+" \nfound in file " + InWhich);
if (Math.Abs(kvp.Value) != 1)
theStringBuilder.AppendLine( Math.Abs(kvp.Value)+ "times");
}
}
}
// Display all results in message box
MessageBox.Show(theStringBuilder.ToString());
var firstFileChanges = new List<string>();
var secondFileChanges = new List<string>();
System.Text.StringBuilder theStringBuilder = new System.Text.StringBuilder();
foreach (KeyValuePair<string, int> kvp in Comparer)
{
if (kvp.Value != 0)
{
mismatches++;
string InWhich = kvp.Value > 0 ? firstFile : secondFile;
if(InWhich == firstFile)
{
firstFileChanges.Add(kvp.Key);
}
else
{
secondFileChanges.Add(kvp.Key);
}
}
}
if(firstFileChanges.Count > 0 )
{
theStringBuilder.Append("First file changes: ");
int counter1 = 0;
foreach(string change1 in firstFileChanges)
{
if(counter1 > 0)
{
theStringBuilder.Append(", ");
}
theStringBuilder.Append(change1);
counter1 += 1;
}
theStringBuilder.AppendLine();
}
if(secondFileChanges.Count > 0 )
{
theStringBuilder.Append("Second file changes: ");
int counter2 = 0;
foreach(string change2 in secondFileChanges)
{
if(counter2 > 0)
{
theStringBuilder.Append(", ");
}
theStringBuilder.Append(change2);
counter2 += 1;
}
}
MessageBox.Show(theStringBuilder.ToString());
更新:
要存储每个文件的更改,请使用如下列表:
System.Text.StringBuilder theStringBuilder = new System.Text.StringBuilder();
foreach (KeyValuePair<string, int> kvp in Comparer)
{
if (kvp.Value != 0)
{
mismatches++;
string InWhich = kvp.Value > 0 ? firstFile : secondFile;
theStringBuilder.AppendLine("Extra value \n"+kvp.Key+" \nfound in file " + InWhich);
if (Math.Abs(kvp.Value) != 1)
theStringBuilder.AppendLine( Math.Abs(kvp.Value)+ "times");
}
}
}
// Display all results in message box
MessageBox.Show(theStringBuilder.ToString());
var firstFileChanges = new List<string>();
var secondFileChanges = new List<string>();
System.Text.StringBuilder theStringBuilder = new System.Text.StringBuilder();
foreach (KeyValuePair<string, int> kvp in Comparer)
{
if (kvp.Value != 0)
{
mismatches++;
string InWhich = kvp.Value > 0 ? firstFile : secondFile;
if(InWhich == firstFile)
{
firstFileChanges.Add(kvp.Key);
}
else
{
secondFileChanges.Add(kvp.Key);
}
}
}
if(firstFileChanges.Count > 0 )
{
theStringBuilder.Append("First file changes: ");
int counter1 = 0;
foreach(string change1 in firstFileChanges)
{
if(counter1 > 0)
{
theStringBuilder.Append(", ");
}
theStringBuilder.Append(change1);
counter1 += 1;
}
theStringBuilder.AppendLine();
}
if(secondFileChanges.Count > 0 )
{
theStringBuilder.Append("Second file changes: ");
int counter2 = 0;
foreach(string change2 in secondFileChanges)
{
if(counter2 > 0)
{
theStringBuilder.Append(", ");
}
theStringBuilder.Append(change2);
counter2 += 1;
}
}
MessageBox.Show(theStringBuilder.ToString());
使用StringBuilder在循环中构建字符串,如下所示:
System.Text.StringBuilder theStringBuilder = new System.Text.StringBuilder();
foreach (KeyValuePair<string, int> kvp in Comparer)
{
if (kvp.Value != 0)
{
mismatches++;
string InWhich = kvp.Value > 0 ? firstFile : secondFile;
theStringBuilder.AppendLine("Extra value \n"+kvp.Key+" \nfound in file " + InWhich);
if (Math.Abs(kvp.Value) != 1)
theStringBuilder.AppendLine( Math.Abs(kvp.Value)+ "times");
}
}
}
// Display all results in message box
MessageBox.Show(theStringBuilder.ToString());
var firstFileChanges = new List<string>();
var secondFileChanges = new List<string>();
System.Text.StringBuilder theStringBuilder = new System.Text.StringBuilder();
foreach (KeyValuePair<string, int> kvp in Comparer)
{
if (kvp.Value != 0)
{
mismatches++;
string InWhich = kvp.Value > 0 ? firstFile : secondFile;
if(InWhich == firstFile)
{
firstFileChanges.Add(kvp.Key);
}
else
{
secondFileChanges.Add(kvp.Key);
}
}
}
if(firstFileChanges.Count > 0 )
{
theStringBuilder.Append("First file changes: ");
int counter1 = 0;
foreach(string change1 in firstFileChanges)
{
if(counter1 > 0)
{
theStringBuilder.Append(", ");
}
theStringBuilder.Append(change1);
counter1 += 1;
}
theStringBuilder.AppendLine();
}
if(secondFileChanges.Count > 0 )
{
theStringBuilder.Append("Second file changes: ");
int counter2 = 0;
foreach(string change2 in secondFileChanges)
{
if(counter2 > 0)
{
theStringBuilder.Append(", ");
}
theStringBuilder.Append(change2);
counter2 += 1;
}
}
MessageBox.Show(theStringBuilder.ToString());
更新:
要存储每个文件的更改,请使用如下列表:
System.Text.StringBuilder theStringBuilder = new System.Text.StringBuilder();
foreach (KeyValuePair<string, int> kvp in Comparer)
{
if (kvp.Value != 0)
{
mismatches++;
string InWhich = kvp.Value > 0 ? firstFile : secondFile;
theStringBuilder.AppendLine("Extra value \n"+kvp.Key+" \nfound in file " + InWhich);
if (Math.Abs(kvp.Value) != 1)
theStringBuilder.AppendLine( Math.Abs(kvp.Value)+ "times");
}
}
}
// Display all results in message box
MessageBox.Show(theStringBuilder.ToString());
var firstFileChanges = new List<string>();
var secondFileChanges = new List<string>();
System.Text.StringBuilder theStringBuilder = new System.Text.StringBuilder();
foreach (KeyValuePair<string, int> kvp in Comparer)
{
if (kvp.Value != 0)
{
mismatches++;
string InWhich = kvp.Value > 0 ? firstFile : secondFile;
if(InWhich == firstFile)
{
firstFileChanges.Add(kvp.Key);
}
else
{
secondFileChanges.Add(kvp.Key);
}
}
}
if(firstFileChanges.Count > 0 )
{
theStringBuilder.Append("First file changes: ");
int counter1 = 0;
foreach(string change1 in firstFileChanges)
{
if(counter1 > 0)
{
theStringBuilder.Append(", ");
}
theStringBuilder.Append(change1);
counter1 += 1;
}
theStringBuilder.AppendLine();
}
if(secondFileChanges.Count > 0 )
{
theStringBuilder.Append("Second file changes: ");
int counter2 = 0;
foreach(string change2 in secondFileChanges)
{
if(counter2 > 0)
{
theStringBuilder.Append(", ");
}
theStringBuilder.Append(change2);
counter2 += 1;
}
}
MessageBox.Show(theStringBuilder.ToString());
您可以按如下方式使用StringBuilder
StringBuilder sb = new StringBuilder();
foreach (KeyValuePair<string, int> kvp in Comparer)
{
if (kvp.Value != 0)
{
mismatches++;
string InWhich = kvp.Value > 0 ? firstFile : secondFile;
sb.AppendLine("Extra value \n" + kvp.Key + " \nfound in file " + InWhich + (Math.Abs(kvp.Value) != 1 ? ("\n" + Math.Abs(kvp.Value) + "times") : string.Empty));
}
}
MessageBox.Show(sb.ToString());
您可以按如下方式使用StringBuilder
StringBuilder sb = new StringBuilder();
foreach (KeyValuePair<string, int> kvp in Comparer)
{
if (kvp.Value != 0)
{
mismatches++;
string InWhich = kvp.Value > 0 ? firstFile : secondFile;
sb.AppendLine("Extra value \n" + kvp.Key + " \nfound in file " + InWhich + (Math.Abs(kvp.Value) != 1 ? ("\n" + Math.Abs(kvp.Value) + "times") : string.Empty));
}
}
MessageBox.Show(sb.ToString());
如果我想对某个文件添加更改,我是否也可以为其创建stringbuilder?所以我没有得到文件一个增加2,文件一个增加狗。。。并将其添加一个文件:2,狗@Masriyah-当然,您可以有多个StringBuilder,但我不确定您对某个文件的更改是什么意思?这里我有两个文件,因此对第一个文件或第二个文件进行更改。因此,如果对第一个文件所做的更改,它将一次性声明第一个文件,并列出该文件中所做的所有更改。与其命名文件,不如多次显示更改和相同的文件名参见更新:回答您提出的一种方法。您是明星!感谢bunchif,我想给某个文件添加一个更改,我可以为它创建一个stringbuilder吗?所以我没有得到文件一个增加2,文件一个增加狗。。。并将其添加一个文件:2,狗@Masriyah-当然,您可以有多个StringBuilder,但我不确定您对某个文件的更改是什么意思?这里我有两个文件,因此对第一个文件或第二个文件进行更改。因此,如果对第一个文件所做的更改,它将一次性声明第一个文件,并列出该文件中所做的所有更改。与其命名文件,不如多次显示更改和相同的文件名参见更新:回答您提出的一种方法。您是明星!谢谢一个bunchi得到一个错误,说明我不能像linq那样从字符串转换到boolI,我会试试看。我得到一个错误,说明我不能像linq那样从字符串转换到boolI,我会试试看