string
リストの内容をメッセージボックスの本文に表示するにはどうすればよいですか?
これが私がこれまでに持っているものです:
List<string> a = new List<string> {};
foreach (DataGridViewCell cell in dgvC.SelectedCells)
{
a.Add(cell.Value.ToString());
}
MessageBox.Show(a); // doesn't work !?
MessageBox.Show(string.Join(Environment.NewLine, a));
これは、メッセージとして「System.Collections.Generic.List`1[System.String]」の行に沿って何かを取得していることを前提としています。
MessageBoxには、リストではなく文字列が必要です
StringBuilder sb = new StringBuilder();
foreach (DataGridViewCell cell in dgvC.SelectedCells)
{
sb.AppendLine(cell.Value.ToString());
}
MessageBox.Show(sb.ToString());
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);
MessageBox.Show
文字列が必要です。この形式で必要な場合は、次のように作成できます。
StringBuilder builder = new StringBuilder();
foreach (DataGridViewCell cell in dgvC.SelectedCells.OrderBy(c => c.Index))
builder.AppendLine(cell.Value);
}
MessageBox.Show(builder.ToString());
より洗練された出力が必要な場合は、それを表示するために新しいフォームを作成する必要があります。
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);
MessageBoxは、文字列以外のデータ型を表示できません。リストを次のような文字列としてフォーマットする必要があります。
MessageBox.Show(string.Join(", ", a.ToArray()));
これを試して
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());