我有一个列表,其中包含我要填充的对象数据类型,然后将其读出为字符串。该列表应保存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/

10-12 00:37
查看更多