如何获取MessageBox中的列表?

时间:2012-06-05 20:24:34

标签: c# winforms

如何在消息框正文中显示string列表的内容?

这是我到目前为止所拥有的:

List<string> a = new List<string> {}; 
foreach (DataGridViewCell cell in dgvC.SelectedCells) 
{ 
    a.Add(cell.Value.ToString()); 
} 

MessageBox.Show(a);  // doesn't work !?

7 个答案:

答案 0 :(得分:7)

MessageBox.Show(string.Join(Environment.NewLine, a)); 

这假设您正在获取“System.Collections.Generic.List`1 [System.String]”的内容作为消息。

答案 1 :(得分:7)

MessageBox需要一个不是列表的字符串

StringBuilder sb = new StringBuilder();
foreach (DataGridViewCell cell in dgvC.SelectedCells)
{
    sb.AppendLine(cell.Value.ToString()); 
}
MessageBox.Show(sb.ToString());

答案 2 :(得分:4)

MessageBox.Show需要一个字符串。如果您需要这种格式,可以像这样构建它:

StringBuilder builder = new StringBuilder();
foreach (DataGridViewCell cell in dgvC.SelectedCells.OrderBy(c => c.Index))
    builder.AppendLine(cell.Value);
}

MessageBox.Show(builder.ToString());

如果您需要更复杂的输出,则可能需要创建一个新表单来显示它。

答案 3 :(得分:3)

MessageBox.Show将字符串作为参数。

string result;
foreach (DataGridViewCell cell in dgvC.SelectedCells) 
{ 
   //choose one
   //result += cell.Value.ToString() + Environment.NewLine;
   //or
   result = cell.Value.ToString() + Environment.NewLine + result;
} 

MessageBox.Show(result);

答案 4 :(得分:3)

List<string> list = new List<string> {}; 

foreach (DataGridViewCell cell in dgvC.SelectedCells) 
{ 
a.Add(cell.Value.ToString()); 
} 

string s = String.Join(",", list);

MessageBox.Show(s);

答案 5 :(得分:3)

MessageBox无法显示除字符串以外的任何数据类型。您需要将列表格式化为字符串,例如:

MessageBox.Show(string.Join(", ", a.ToArray()));

答案 6 :(得分:3)

试试这个

StringBuilder builder = new StringBuilder();
foreach (DataGridViewCell cell in dataGridView1.SelectedCells)
{
    if (cell.ValueType == typeof(String))
    {
        builder.Append(cell.Value);
    } 
}
MessageBox.Show(builder.ToString());

注意,如果您想避免投票,则需要开始正确格式化问题。

我希望这会有所帮助。

修改:或......

StringBuilder builder = new StringBuilder();
for (int i = dataGridView1.SelectedCells.Count - 1; i >= 0; i--)
    if (dataGridView1.SelectedCells[i].ValueType == typeof(String))
        builder.Append(dataGridView1.SelectedCells[i].Value.ToString());
MessageBox.Show(builder.ToString());