0

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

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

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

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

7 回答 7

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

这是假设您收到的消息类似于“System.Collections.Generic.List`1[System.String]”。

于 2012-06-05T20:27:29.453 回答
7

MessageBox 需要字符串而不是列表

StringBuilder sb = new StringBuilder();
foreach (DataGridViewCell cell in dgvC.SelectedCells)
{
    sb.AppendLine(cell.Value.ToString()); 
}
MessageBox.Show(sb.ToString());
于 2012-06-05T20:29:28.253 回答
5
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);
于 2012-06-05T20:28:23.603 回答
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());

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

于 2012-06-05T20:28:22.447 回答
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());
于 2012-06-05T20:33:34.433 回答
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);
于 2012-06-05T20:28:20.017 回答
3

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

MessageBox.Show(string.Join(", ", a.ToArray()));
于 2012-06-05T20:28:27.797 回答