Winform列表

时间:2014-07-10 08:09:41

标签: c# winforms listbox multiple-columns

如果这是一个非常明显的问题,我对编程很新,所以道歉。我在网上搜索过,但没有找到一个非常合适的答案。

我正在编写一个程序来解释文件流中索引的字节。一旦它们被转换为人类可读日期/字符串/整数等,我想使用Winform在列中显示结果。目前我使用的是一个列表框,只是将每个条目与列分开,但这种方式让人感觉很笨拙。

有人可以建议我如何将结果放入使用列的显示中吗?

1 个答案:

答案 0 :(得分:1)

在您的案例中,使用ListView而不是ListBox会更好。这是一个示例,显示了ListView中不同列中字符串中的所有单词:

确保将以下属性设置为ListView(此处名称为ColumnsListView):

ColumnsListView.View = View.Details;

此方法接受一个字符串,按空格分割,并为每个值添加一列:

private void SetListView(string input)
{
    var values = input.Split(' ');
    ColumnsListView.Columns.Add("Column1");
    var item = new ListViewItem(values[0]);

    for (var i = 1; i < values.Length; i++)
    {
        ColumnsListView.Columns.Add("Column" + (i+1));
        item.SubItems.Add(new ListViewItem.ListViewSubItem { Text = values[i] });
    }

    ColumnsListView.Items.Add(item);
}

使用LinQ的Skip()方法添加子项目时,可以采用不同的方式:

private void SetListView(string input)
{
    var values = input.Split(' ');

    for (var i = 0; i < values.Length; i++)
        ColumnsListView.Columns.Add("Column" + (i + 1));

    var item = new ListViewItem(values[0]);
    item.SubItems.AddRange(values.Skip(1).ToArray());
    ColumnsListView.Items.Add(item);
}

<强>更新

以下是您要使用DataGridView

的示例
private void SetDataGridView(string input)
{
    var values = input.Split(' ');

    for (var i = 0; i < values.Length; i++)
        ColumnsDataGridView.Columns.Add("Column" + (i + 1), "Column" + (i + 1));

    ColumnsDataGridView.Rows.Add(values);
}