Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在ObjectListView C中生成列#_C#_Objectlistview - Fatal编程技术网

C# 在ObjectListView C中生成列#

C# 在ObjectListView C中生成列#,c#,objectlistview,C#,Objectlistview,在普通的ListView中,我通常会动态生成列,如下所示: var list = new List<ColumnNameSize>(); list.Add(new ColumnNameSize("Computer Name", 0)); list.Add(new ColumnNameSize("Full Computer Name", 150)); list.Add(new ColumnNameSize("Migrate

在普通的ListView中,我通常会动态生成列,如下所示:

        var list = new List<ColumnNameSize>();
        list.Add(new ColumnNameSize("Computer Name", 0));
        list.Add(new ColumnNameSize("Full Computer Name", 150));
        list.Add(new ColumnNameSize("Migrated", 150));
        list.Add(new ColumnNameSize("Disabled", 0));
        list.Add(new ColumnNameSize("Disabled & Not Migrated", 150));
        generateListView(listViewObjects, list);

        public static void generateListView(ListView varListView, List<ColumnNameSize> nameSizeList) {
        varListView.ClearColumns();
        foreach(ColumnNameSize nameSize in nameSizeList) {
            varListView.AddColumn(nameSize.ColumnName, nameSize.ColumnSize);
        }
    }
var list=newlist();
添加(新的列名称(“计算机名”,0));
添加(新的列名称(“计算机全名”,150));
添加(新的列名称(“迁移”,150));
添加(新的列名称(“禁用”,0));
添加(新的列名称(“已禁用和未迁移”,150));
generateListView(listViewObjects,列表);
公共静态void generateListView(ListView varListView,列表名称列表){
varListView.ClearColumns();
foreach(nameSizeList中的ColumnNameSize nameSize){
varListView.AddColumn(nameSize.ColumnName,nameSize.ColumnSize);
}
}
我该怎么做呢。我尝试了多种组合:

    public void generateListView(ObjectListView varListView, List<ColumnNameSize> nameSizeList) {

        ArrayList myArrayList = new ArrayList();
        foreach (ColumnNameSize nameSize in nameSizeList) {
            OLVColumn columnHeader = new BrightIdeasSoftware.OLVColumn();  
            columnHeader.Width = nameSize.ColumnSize;
            columnHeader.Text = nameSize.ColumnName;
            myArrayList.Add(columnHeader);
            varListView.AllColumns.Add(columnHeader);
        }
        Object columnsHeader = myArrayList.ToArray();
        varListView.Columns.AddRange( columnsHeader);
    }
public void generateListView(ObjectListView varListView,List nameSizeList){
ArrayList myArrayList=新建ArrayList();
foreach(nameSizeList中的ColumnNameSize nameSize){
OLVColumn columnHeader=新的BrightIdeasSoftware.OLVColumn();
columnHeader.Width=nameSize.ColumnSize;
columnHeader.Text=nameSize.ColumnName;
添加(columnHeader);
varListView.AllColumns.Add(columnHeader);
}
Object columnsHeader=myArrayList.ToArray();
varListView.Columns.AddRange(columnsHeader);
}
但似乎都不管用

你能试试这个吗

 public void generateListView(ObjectListView varListView, List<ColumnNameSize> nameSizeList) {

        List<OLVColumn>  columnsList = new List<OLVColumn>();
        foreach (ColumnNameSize nameSize in nameSizeList) {
            OLVColumn columnHeader = new BrightIdeasSoftware.OLVColumn();  
            columnHeader.Width = nameSize.ColumnSize;
            columnHeader.Text = nameSize.ColumnName;
            columnsList .Add(columnHeader);
            varListView.AllColumns.Add(columnHeader);
        }
        varListView.Columns.AddRange( columnsList.Cast<System.Windows.Forms.ColumnHeader>().ToArray());
    }
public void generateListView(ObjectListView varListView,List nameSizeList){
列表列列表=新列表();
foreach(nameSizeList中的ColumnNameSize nameSize){
OLVColumn columnHeader=新的BrightIdeasSoftware.OLVColumn();
columnHeader.Width=nameSize.ColumnSize;
columnHeader.Text=nameSize.ColumnName;
columnsList.Add(columnHeader);
varListView.AllColumns.Add(columnHeader);
}
varListView.Columns.AddRange(columnsList.Cast().ToArray());
}
你能试试这个吗

 public void generateListView(ObjectListView varListView, List<ColumnNameSize> nameSizeList) {

        List<OLVColumn>  columnsList = new List<OLVColumn>();
        foreach (ColumnNameSize nameSize in nameSizeList) {
            OLVColumn columnHeader = new BrightIdeasSoftware.OLVColumn();  
            columnHeader.Width = nameSize.ColumnSize;
            columnHeader.Text = nameSize.ColumnName;
            columnsList .Add(columnHeader);
            varListView.AllColumns.Add(columnHeader);
        }
        varListView.Columns.AddRange( columnsList.Cast<System.Windows.Forms.ColumnHeader>().ToArray());
    }
public void generateListView(ObjectListView varListView,List nameSizeList){
列表列列表=新列表();
foreach(nameSizeList中的ColumnNameSize nameSize){
OLVColumn columnHeader=新的BrightIdeasSoftware.OLVColumn();
columnHeader.Width=nameSize.ColumnSize;
columnHeader.Text=nameSize.ColumnName;
columnsList.Add(columnHeader);
varListView.AllColumns.Add(columnHeader);
}
varListView.Columns.AddRange(columnsList.Cast().ToArray());
}

要在通过代码手动添加列后使其可见,需要使用以下行重新生成它们:

varListView.RebuildColumns();
根据Bala的回答,您得到以下代码:

public void generateListView(ObjectListView varListView, List<ColumnNameSize> nameSizeList)
{
    List<OLVColumn> columnsList = new List<OLVColumn>();
    foreach (ColumnNameSize nameSize in nameSizeList)
    {
        OLVColumn columnHeader = new BrightIdeasSoftware.OLVColumn();
        columnHeader.Width = nameSize.ColumnSize;
        columnHeader.Text = nameSize.ColumnName;
        columnsList.Add(columnHeader);
        varListView.AllColumns.Add(columnHeader);
    }

    varListView.Columns.AddRange(columnsList.Cast<System.Windows.Forms.ColumnHeader>().ToArray());
    varListView.RebuildColumns();
}
public void generateListView(ObjectListView varListView,List nameSizeList)
{
列表列列表=新列表();
foreach(nameSizeList中的ColumnNameSize nameSize)
{
OLVColumn columnHeader=新的BrightIdeasSoftware.OLVColumn();
columnHeader.Width=nameSize.ColumnSize;
columnHeader.Text=nameSize.ColumnName;
columnsList.Add(columnHeader);
varListView.AllColumns.Add(columnHeader);
}
varListView.Columns.AddRange(columnsList.Cast().ToArray());
varListView.RebuildColumns();
}

要在通过代码手动添加列后使其可见,需要使用以下行重新生成它们:

varListView.RebuildColumns();
根据Bala的回答,您得到以下代码:

public void generateListView(ObjectListView varListView, List<ColumnNameSize> nameSizeList)
{
    List<OLVColumn> columnsList = new List<OLVColumn>();
    foreach (ColumnNameSize nameSize in nameSizeList)
    {
        OLVColumn columnHeader = new BrightIdeasSoftware.OLVColumn();
        columnHeader.Width = nameSize.ColumnSize;
        columnHeader.Text = nameSize.ColumnName;
        columnsList.Add(columnHeader);
        varListView.AllColumns.Add(columnHeader);
    }

    varListView.Columns.AddRange(columnsList.Cast<System.Windows.Forms.ColumnHeader>().ToArray());
    varListView.RebuildColumns();
}
public void generateListView(ObjectListView varListView,List nameSizeList)
{
列表列列表=新列表();
foreach(nameSizeList中的ColumnNameSize nameSize)
{
OLVColumn columnHeader=新的BrightIdeasSoftware.OLVColumn();
columnHeader.Width=nameSize.ColumnSize;
columnHeader.Text=nameSize.ColumnName;
columnsList.Add(columnHeader);
varListView.AllColumns.Add(columnHeader);
}
varListView.Columns.AddRange(columnsList.Cast().ToArray());
varListView.RebuildColumns();
}

要使ObjectListView按预期工作,必须将模型对象所需属性的名称定义为AspectName

与其先创建ColumnNameSize列表,不如逐个添加列:

ObjectListView1.AllColumns.Add(new OLVColumn()
{
    Text = "Column Header",
    Width = 100,
    AspectName = "myProperty"
});

ObjectListView1.RebuildColumns();

要使ObjectListView按预期工作,必须将模型对象所需属性的名称定义为AspectName

与其先创建ColumnNameSize列表,不如逐个添加列:

ObjectListView1.AllColumns.Add(new OLVColumn()
{
    Text = "Column Header",
    Width = 100,
    AspectName = "myProperty"
});

ObjectListView1.RebuildColumns();

看起来您添加了两次列;一次是从
AllColumns.Add()
,然后再次使用
Columns.AddRange()
我知道,这就是我尝试的。。。我用了。加上,它没有出现。。因此,我尝试使用AddRange,但它需要OLVColumn[]而不是object。而不是
Columns.AddRange()
call
RebuildColumns()
AllColumns
重新生成列,似乎您要添加两次列;一次是从
AllColumns.Add()
,然后再次使用
Columns.AddRange()
我知道,这就是我尝试的。。。我用了。加上,它没有出现。。因此,我尝试使用AddRange,但它需要OLVColumn[]而不是object。而不是
Columns.AddRange()
call
RebuildColumns()
AllColumns
重建它们,它可以工作。。但前提是我在IDE中手动添加一列,然后执行此操作。然后添加更多列。如果我从IDE中删除该列并使用它,它将不会显示。似乎必须有某种设置才能显示标题。。这可能是因为它在第一次尝试时一直有效…我根据本页中的用法稍微修改了它,看看它是否有帮助,否则我没有其他想法。我将删除我的答案。它在tnx中起作用。现在只需要了解如何“显示”标题:-)您所做的一切都很好。所以不要删除。只是我可能错了