我有一个列表,其中包含我要填充的对象数据类型,然后将其读出为字符串。该列表应保存DataGridView中每一列的数据:
[Serializable]
public sealed class ColumnOrderItem
{
public int DisplayIndex { get; set; }
public int Width { get; set; }
public bool Visible { get; set; }
public int ColumnIndex { get; set; }
}
private void test()
{
List<ColumnOrderItem> columnOrder = new List<ColumnOrderItem>();
DataGridViewColumnCollection columns = dsgDataGrid.Columns;
for (int i = 0; i < columns.Count; i++)
{
columnOrder.Add(new ColumnOrderItem
{
ColumnIndex = i,
DisplayIndex = columns[i].DisplayIndex,
Visible = columns[i].Visible,
Width = columns[i].Width
});
}
colData = string.Join(",", columnOrder);
MessageBox.Show(colData);
}
我期望的是MessageBox应该按顺序显示每个项目值,如DisplayIndex,Width,Visible,ColumnIndex,DisplayIndex,Width,Visible,ColumnIndex ...等。问题是我回读的所有内容都是0,1,2,这似乎只是dsgDataGrid下的3列(即DataGridView)的ColumnIndex。有谁知道我如何将所有数据输出到单个字符串?
谢谢。
最佳答案
最好的选择是override the ToString method,因此您的类定义将如下所示:
[Serializable]
public sealed class ColumnOrderItem
{
public int DisplayIndex { get; set; }
public int Width { get; set; }
public bool Visible { get; set; }
public int ColumnIndex { get; set; }
public override string ToString()
{
StringBuilder overRideString = new StringBuilder();
overRideString.AppendLine("DisplayIndex" + DisplayIndex.ToString());
overRideString.AppendLine("Width" + Width.ToString());
overRideString.AppendLine("Visible" + Visible.ToString());
overRideString.AppendLine("ColumnIndex" + ColumnIndex.ToString());
return overRideString.ToString();
}
}
如何使用:
StringBuilder details = new StringBuilder();
foreach (ColumnOrderItem item in columnOrder)
{
details.AppendLine(item.ToString());
}
details.ToString(); // this will give you the required result
关于c# - 从列表中读取项目并将其显示为字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34718425/