【问题标题】:ListBox Datasource Won't Update (Windows Application)ListBox 数据源不会更新(Windows 应用程序)
【发布时间】:2017-03-16 19:50:23
【问题描述】:

我浏览了几乎所有关于这个主题的其他帖子,但结果为零。我有一个用于各种日志显示的 ListBox。控制台通过显示所需信息和适当增加项目列表的大小来正确更新。 “日志开始”和“日志#2”也正确显示在列表框中。此外,正在正确达到“已写入”状态。有人有什么想法吗?

这是我的代码:

public BindingList<string> Items;

public Form1()
    {
        Items = new BindingList<string>();
        Items.Add("Log Beginning");
        InitializeComponent();
        Items.Add("Log #2");
        LBLog.DataSource = Items;
        Connect(); // leads to a websocket delcaration, irrelevant here
    }

...

private void websocket_MessageReceived(object sender, MessageReceivedEventArgs e)
    {
        Console.WriteLine("Received " + sender.ToString() + " : " + e.ToString());

        WriteLog("Log: " + e.ToString());

        Console.WriteLine("Log size: " + Items.Count);


    }
private void WriteLog(String msg)
    {
        Items.Add("test");

        LBLog.DataSource = null; // tried adding these two, shouldn't need for a binding list
        LBLog.DataSource = Items;


        Console.WriteLine("Written");

    }

【问题讨论】:

  • @LarsTech 我已经在使用 BindingList,请查看我的代码
  • 抱歉,错过了。您发布的代码不会重复该问题。您是否尝试在其他线程中更新该列表?
  • WriteLog 方法从不使用传递给它的字符串 msg 是否有某种原因?

标签: c# windows winforms listbox


【解决方案1】:

我发现了这个问题。我在不知不觉中试图从不同的线程更新它。 This answer 帮我解决了我的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-05
    • 2015-09-22
    • 1970-01-01
    • 2011-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多