【问题标题】:How to add a name from a textbox to a listbox from multiple threads如何将文本框中的名称添加到多个线程的列表框中
【发布时间】:2017-01-07 15:12:59
【问题描述】:

场景是您打开服务器并开始在线程上侦听客户端我正在使用 winforms 将每个线程连接到用户列表,但到目前为止证明令人困惑。

我一直在使用互联网来解决我的问题,但因为它让我发疯,所以偏头痛。

请帮助任何帮助将不胜感激

盖兹 :)

private delegate void updateList(string text);

    private void SetText(string text)
    {
        if (this.txtNickname.InvokeRequired)
        {
            updateList ul = new updateList(SetText);
            this.Invoke(ul, new object[] { text});
        }
        else
        {
            this.txtNickname.Text = text;
            userList.Items.Add(this.txtNickname.Text);
        }
    }

    private void btnConnect_Click(object sender, EventArgs e)
    {
        if (!granted)
        {
            granted = connected.Connect(this, "127.0.0.1", 4444, txtNickname.Text);
            if (granted)
            {
                btnConnect.Text = "Disconnect";

                if (this.txtNickname.Text != " ")
                {
                    userList.Items.Add(txtNickname.Text);
                    this.txtNickname.Focus();
                    this.txtNickname.Clear();                        
                }
            }
            else
            {
                connected.Disconnect();
                granted = false;
                btnConnect.Text = "Connect";

            }
        }
    }

【问题讨论】:

    标签: c# multithreading winforms sockets concurrency


    【解决方案1】:

    我没有看到调用 SetText() 的位置,但我确实看到了将文本添加到 userList.Items 的两个位置。传入的文本实际上来自哪里?这可能是调用 SetText() 的地方。

    【讨论】:

    • 嗨,感谢您的回复,这是最后一次尝试让它工作,因为我正在根据我目前的知识查看所有可能性。到目前为止,我尝试的方法是通过将昵称文本框添加到列表框中来调用用户列表,但它仅适用于一个客户端,而不适用于另一个客户端。所以我需要多个线程链接到所有客户端列表框,但到目前为止互联网上没有信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-28
    • 2012-01-26
    相关资源
    最近更新 更多