标签: objectlistview

如何使用ObjectListView或TreeListView显示树结构

我一直在研究ObjectListView for .NET,并尝试过自己弄乱它.

我来自使用VirtualTreeview和Delphi,所以如果你能指出相似之处那就太棒了!

我尝试使用TreeListView和以下类创建一个多级树:

public class MyClass
{
    public string Name { get; set; }
    public List<MyClass> MyClasses { get; set; }
    public MyClass(string name)
    {
        Name = name;
        MyClasses = new List<MyClass>();
    }
}
Run Code Online (Sandbox Code Playgroud)

TreeListView是一个设计时组件.我使用此代码创建虚拟数据并让TreeListView显示它.

var MyClasses = new List<MyClass>();
MyClasses.Add(new MyClass("Bob"));
MyClasses.Add(new MyClass("John"));
var myClass = new MyClass("Mike");
myClass.MyClasses.Add(new MyClass("Joe"));
MyClasses.Add(myClass);

treeListView1.SetObjects(MyClasses);
Run Code Online (Sandbox Code Playgroud)

我还有一个显示Name属性的列.

所有这一切都有效,除了我没有看到Mike节点的子节点.我似乎无法弄清楚在这做什么.我查看了文档,但找不到任何有用的信息.

此外,像这样的多级结构可以与ObjectListView的其他变体一起使用,例如FastObjectListView吗?

c# tree objectlistview

2
推荐指数
1
解决办法
6429
查看次数

如何填充 BrightIdeasSoftware.TreeListView ?

我刚刚下载了ObjectListView,但在填充它时遇到了问题。

我得到的清单MyObject

public class MyObject
{
  public int Id { get; set; }
  public int ParentId { get; set; }
  public string Name { get; set; }

  public int Data { get; set; }

  public MyObject(int id, int parentId, string name, int data)
  {
     Id = id;
     ParentId = parentId;
     Name = name;
     Data = data;
  } 
}

List<MyObject> list = List<MyObject>();
Run Code Online (Sandbox Code Playgroud)

我需要用TreeListView元素填充 a MyObject使用 TreeListView)。我还需要一栏填写.Data财产。我无法将其填充为list(同一级别上的所有项目)并且没有任何列,我尝试过以下操作:

this.myTreeListView.SetObjects(list); …
Run Code Online (Sandbox Code Playgroud)

.net c# treeview listview objectlistview

2
推荐指数
2
解决办法
8668
查看次数

Objectlistview 双击解释

doubleclick我正在尝试在对象中实现该功能objectlistview

根据开发人员的说法,应该使用ItemActivate而不是MouseDoubleClick.

所以我想出了这个:

    private void treeListView_ItemActivate(object sender, EventArgs e)
    {
        try
        {
            ListView.SelectedIndexCollection col = treeListView.SelectedIndices;

            MessageBox.Show(col[0].ToString());
        }
        catch (Exception e3)
        {
            globals.logfile.error(e3.ToString());
            globals.logfile.flush();
        }
        finally
        {
        }
    }
Run Code Online (Sandbox Code Playgroud)

它为每个双击的行提供一个值。但我如何从该行获取详细信息?

这是我现在使用的整个解决方案:

    private void treeListView_ItemActivate(object sender, EventArgs e)
    {
        try
        {
            var se = (StructureElement)treeListView.GetItem(treeListView.SelectedIndex).RowObject;
            MessageBox.Show(se.id.ToString());
        }
        catch (Exception e3)
        {
            globals.logfile.error(e3.ToString());
            globals.logfile.flush();
        }
        finally
        {
        }
    }
Run Code Online (Sandbox Code Playgroud)

c# objectlistview

2
推荐指数
1
解决办法
2200
查看次数

如何将图像置于ObjectListView列的中心?

我在C#winforms项目中使用ObjectListView,并希望在其中一列中显示一个小图标.

到目前为止,图标显示正常,但它不在列的中心,我找不到任何与列中的图像对齐有关的文档或代码.

以下是将图像显示为列内容的说明.

代码几乎与给出的示例相同:

col_Important.AspectGetter = delegate(object x) { return ((ClassMyItem)x).IsImportant; };
col_Important.AspectToStringConverter = delegate(object x) { return String.Empty; };
col_Important.ImageGetter = delegate(object x)
    {
        return ((ClassMyItem)x).IsImportant? "star" : "none";
    };
Run Code Online (Sandbox Code Playgroud)

有没有人处理过这个问题并知道如何使图像居中?

.net winforms objectlistview

1
推荐指数
1
解决办法
1633
查看次数

如何在ObjectListView中过滤多个SubItems

所以,我试图以编程方式将ModelFilter添加到我的ObjectListView中,它将分别查看两个(或更多)列和过滤器.目前,我认为ObjectListView只支持一个过滤器,但我可能在代码/文档中遗漏了一些东西.

例如,我的一个预期过滤器是查看"活动"列,其值为"A"或"T".另一栏是主管姓名.所以,我想找到Supervisor name ="Smith"和Active ="A"的所有条目.

我可以使用TextMatchFilter单独使用过滤器来处理这些选项中的任何一个,但无法弄清楚如何同时使两者同时工作.

我看到的一个小问题是,如果超级用户名包含"A",那么使用标准过滤器将返回整行.我已经能够通过以编程方式将列的Searchable属性设置为false来解决这个问题,如果我不想查看它们,然后在列表被过滤后再将它们重新打开.但是,我有一种感觉,如果我将Searchable打开为Supervisor列,我将得到不需要的结果.

有没有人知道如何让过滤器在多个列上工作,只使用每个过滤器的指示列?

(我没有示例代码来帮助解决这个问题.但是,如果你真的想看看我对我的过滤代码有什么,我会很乐意添加它;但它在VB中却是如此).

当前代码 - 查看用户选择的值(searchMeth)并启用对该列的搜索.然后它搜索txtSearch框中输入的内容.但是,除此之外,我还想为Supervisor添加一个额外的过滤器.(参见AndAlso评论

    olvEmps.UseFiltering = True
    OlvColumn1.Searchable = False
    OlvColumn2.Searchable = False
    OlvColumn4.Searchable = False
    OlvColumn3.Searchable = False
    OlvColumn5.Searchable = False

    Select Case searchMeth
        Case "Name"
            OlvColumn1.Searchable = True
        Case "Employee Number"
            OlvColumn2.Searchable = True
        Case "Department"
            OlvColumn3.Searchable = True
    End Select

    olvEmps.OwnerDraw = True
    Dim tFilter As BrightIdeasSoftware.TextMatchFilter = BrightIdeasSoftware.TextMatchFilter.Contains(olvEmps, txtSearch.Text)
    'andalso olvColumn5 = supeName?

    olvEmps.ModelFilter = tFilter
    olvEmps.DefaultRenderer = New BrightIdeasSoftware.HighlightTextRenderer(tFilter)

    OlvColumn1.Searchable = True
    OlvColumn2.Searchable = True
    OlvColumn3.Searchable = …
Run Code Online (Sandbox Code Playgroud)

.net c# vb.net winforms objectlistview

1
推荐指数
1
解决办法
3995
查看次数

ObjectListView不显示所选项目的选择颜色

我有一个ObjectListView基本上是标准.NET的包装器ListView.我的问题是我无法找出正确的方法调用序列,以向控件添加新对象,滚动控件以确保对象可见,并选择对象.下面,是我的代码实现这一点.一切正常,但由于某种原因,在我点击或重新调整其中一列之前,所选项目/对象的背景颜色不会显示.我不确定控件是否没有被聚焦或是什么.

// objectListViewItems is of type BrightIdeasSoftware.ObjectListViewItems
objectListViewItems.AddObject(e.InsertedItem);
objectListViewItems.Refresh();
objectListViewItems.Focus();
objectListViewItems.EnsureModelVisible(e.InsertedItem);
objectListViewItems.SelectedObject = e.InsertedItem;
objectListViewItems.Focus();
Run Code Online (Sandbox Code Playgroud)

下面的代码更新了ObjectListView中的一个项目,并且运行正常.不确定我上面做错了什么......

objectListViewItems.RefreshObject(itemToEdit);
objectListViewItems.Focus();
objectListViewItems.SelectObject(itemToEdit);
Run Code Online (Sandbox Code Playgroud)

c# listview winforms objectlistview

1
推荐指数
1
解决办法
2521
查看次数

如何在ObjectListView中获取所选对象的值

我有一个objectlistview,它在列中显示文件名及其路径.我想在选定的项目上运行一个函数.有没有什么方法可以获取文件名的值并循环遍历在objectlistview上选择的每个文件?列方面名称是Filename.

我的函数如下:sampleFunction(string inputFile,string outputFile);

到目前为止我已经尝试了这个,但是无法工作,我知道我缺少对列本身的引用,但我不知道如何添加它:

for(var i=0; i<=objectListView1.SelectedObjects.Count; i++)
        {
            encClass.sampleFunction(objectListView1.SelectedObjects[i], "output here");
        }
Run Code Online (Sandbox Code Playgroud)

编辑:

我也试过追加ToString()方法objectListView1.SelectedObjects[i].ToString().它没有显示错误,但函数无法正常运行,因为我有3列,我只想在函数中使用第一列的值作为inputFile值.

c# objectlistview

1
推荐指数
1
解决办法
4949
查看次数

C#将项添加到ObjectListView

我的程序提取Windows更新,检测版本号并在列表视图中将它们记录到列(KB,版本),但我正在尝试将其更改为ObjectListView,以便我可以对列进行排序.我不能为我的生活找出如何将结果写入ObjectListView并且我尝试的任何东西似乎都工作.这是我目前的代码:

foreach (string file in msu)
{
    string KB = GetKBNumber(file);
    Expand.MSU(file, TempDirectory + "\\" + KB);
    List<string> versions = GetVersionNumbers(TempDirectory + "\\" + KB);

    foreach (string version in versions)
    {
        ListViewItem itm = new ListViewItem(new[] { KB, version });
        olvOutput.Items.Add(itm);
    }
    PerformStep();
}
Run Code Online (Sandbox Code Playgroud)

但它只是将空白数据写入控件.我究竟做错了什么?提前致谢.

编辑:这是olvOutput设计器代码:

        // 
        // olvOutput
        // 
        this.olvOutput.AllColumns.Add(this.olvKBNumber);
        this.olvOutput.AllColumns.Add(this.olvVersion);
        this.olvOutput.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
        | System.Windows.Forms.AnchorStyles.Left) 
        | System.Windows.Forms.AnchorStyles.Right)));
        this.olvOutput.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
        this.olvKBNumber,
        this.olvVersion});
        this.olvOutput.Location = new System.Drawing.Point(18, 12);
        this.olvOutput.Name = "olvOutput";
        this.olvOutput.ShowGroups = false;
        this.olvOutput.Size …
Run Code Online (Sandbox Code Playgroud)

c# winforms objectlistview

1
推荐指数
1
解决办法
1191
查看次数

如何在ObjectListView中正确选择一行?

我在C#和.Net 4.0中使用ObjectListView。我编写了重新加载列表视图的代码,然后重新选择了最后选择的索引。

重新选择代码非常简单:

olvListView.SelectedIndex = i;
Run Code Online (Sandbox Code Playgroud)

这似乎起作用,因为已选中该项目。但是,如果我然后单击向上或向下箭头,则选择将跳至第二行(无论我选择了哪一行),这表明无论i的值是多少,选择实际上都是在第一行设置的。

我在这里做错了什么?

c# winforms objectlistview

1
推荐指数
1
解决办法
3181
查看次数

ObjectListView 标题背景色

我有 HeaderUsesThemes 为假。当我“编辑列”时,我可以很好地设置每个标题的前景色属性,但没有背景色的属性。

如何设置标题的背景颜色?

objectlistview

1
推荐指数
1
解决办法
1668
查看次数

标签 统计

objectlistview ×10

c# ×8

winforms ×5

.net ×3

listview ×2

tree ×1

treeview ×1

vb.net ×1