【问题标题】:c# - listview does not add items when using a delegatec# - 使用委托时列表视图不添加项目
【发布时间】:2015-12-12 21:30:01
【问题描述】:

使用工作线程,我将项目添加到 ListView,但是为此,我已经以如下代码示例所示的形式实现了一个委托。

问题:

执行 ListView.Items.add() 行时,不会向 ListView 添加任何内容

我尝试过的:

我添加了一个按钮,当单击它时,它成功地将 ListViewItem 添加到 ListView 对象中,正如它应该的那样。 (这是在工作线程启动之前,用于测试/调试)

我还尝试将 ListView 交换为 RichEdit,以防我在代码中有错误,但项目成功显示在 RichEdit 中,因此我添加了另一个 ListView,以防第一个/前一个有错误,并且没有重命名ListView,我尝试添加项目,但没有成功。

委托中发生的事情:

什么都没有,在 clear() 方法之后,每个带有标题的 4 列都会消失,并且没有任何内容添加到列表视图中

结论:

我唯一的结论是委托与 ListView 不兼容,因为我能够将项目添加到 RichEdit,但不能添加到 ListView。

这是一个错误吗?我是不是做错了什么?

代码示例

void connected_add_device()
        {
            string[] t = { "123", "-1", "sa.d.sdf.s.fg", "sda-f-sd-fgds-gf" };
            if (display_connected_Devices.InvokeRequired)
                display_connected_Devices.BeginInvoke((MethodInvoker)delegate ()
                {
                    display_connected_Devices.Clear();
                    display_connected_Devices.Items.Add(new ListViewItem(t));
                }
                );
            else
            {
                display_connected_Devices.Clear();
                display_connected_Devices.Items.Add(new ListViewItem(t));
            }
        }

不管怎样,我有一个糟糕的 GIT 提交。修复一切后,此 ListView(在 GIT 问题之前已成功显示项目)现在不再显示项目。

【问题讨论】:

    标签: c# .net listview


    【解决方案1】:

    请改用display_connected_Devices.Items.Clear();。因为display_connected_Devices.Clear(); 会像您注意到的那样清除列。

    【讨论】:

    • 对不起,我太笨了,我原来的 git-issue 代码中有这个,我不敢相信我忽略了这个,thnx
    • 没问题,你不是第一个犯这个错误的人。我这么快注意到这一点是有原因的 ;-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-11
    • 1970-01-01
    • 2016-06-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多