我有一个带有对象数据类型的列表,我正在尝试填充,然后读出一个字符串。该列表应包含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列ColumnIndex,它是一个DataGridView。有谁知道如何将所有数据输出到单个字符串?
感谢。
答案 0 :(得分:4)
最适合您的选项是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
答案 1 :(得分:2)
您可以为ToString
定义ColumnOrderItem
并使用
THX通过ToString
@Neijwiert
String.join
的隐含通知
例如:
public string ToString()
{
return string.Format("{0},{1},{2},{3}",
this.ColumnIndex,
this.DisplayIndex,
this.Visible,
this.Width);
}
致电String.join(spliter,enums:IEnumerable<T>)
它的作用与String.join(spliter,enums.Select(i->i.toString()))
Join(String,IEnumerable)是一种方便的方法,它允许您连接IEnumerable集合的每个成员,而无需先将它们转换为字符串。 IEnumerable集合中每个对象的字符串表示形式是通过调用该对象的ToString方法派生的。
答案 2 :(得分:0)