列表无法清除!C# //选择电影选项,这将填充电影列表(仅标题) 私有无效btnMovies_单击(对象发送者,事件参数e) { int size=0; 字符串标题=null; 字节[]数据结束=新字节[1024]; 字节[]数据接收=新字节[1024]; string[]split=null; movieList.Items.Clear(); movietitles.Clear(); 尝试 { Array.Clear(dataSend,0,dataSend.Length); dataSend=Encoding.ASCII.GetBytes(“电影”); socket.Send(dataSend); size=socket.Receive(dataReceive);//接收电影标题 titles=Encoding.ASCII.GetString(数据接收,0,大小); 字符[]分隔符={';'}; 拆分=标题。拆分(分隔符); 对于(int i=0;i

列表无法清除!C# //选择电影选项,这将填充电影列表(仅标题) 私有无效btnMovies_单击(对象发送者,事件参数e) { int size=0; 字符串标题=null; 字节[]数据结束=新字节[1024]; 字节[]数据接收=新字节[1024]; string[]split=null; movieList.Items.Clear(); movietitles.Clear(); 尝试 { Array.Clear(dataSend,0,dataSend.Length); dataSend=Encoding.ASCII.GetBytes(“电影”); socket.Send(dataSend); size=socket.Receive(dataReceive);//接收电影标题 titles=Encoding.ASCII.GetString(数据接收,0,大小); 字符[]分隔符={';'}; 拆分=标题。拆分(分隔符); 对于(int i=0;i,c#,sockets,listbox,C#,Sockets,Listbox,我认为如果将ListBox绑定到数据源,可能会更好。类似于: //selects the movie option, this will populate the movie lists (titles only) private void btnMovies_Click(object sender, EventArgs e) { int size = 0; string titles = null; byte[] dataSend

我认为如果将ListBox绑定到数据源,可能会更好。类似于:

//selects the movie option, this will populate the movie lists (titles only)
    private void btnMovies_Click(object sender, EventArgs e)
    {
        int size = 0;
        string titles = null;
        byte[] dataSend = new byte[1024];
        byte[] dataReceive = new byte[1024];
        string[] split = null;
        movieList.Items.Clear();
        movietitles.Clear();
        try
        {

            Array.Clear(dataSend, 0, dataSend.Length);
            dataSend = Encoding.ASCII.GetBytes("movies");
            socket.Send(dataSend);
            size = socket.Receive(dataReceive);//receive movie titles
            titles = Encoding.ASCII.GetString(dataReceive, 0, size);
            char[] separators = { ';' };
            split = titles.Split(separators);

            for (int i =0;i<split.Count();i++)
            {
                movietitles.Add(split[i]);
            }

            foreach (string smovie in movietitles)
            {
                movieList.Items.Add(smovie);
            }


        }
        catch (SocketException ex)
        {
            lblError.Text = "Unable to connect to server";
            lblError.Text += ex;
        }

        pnlMovies.Visible = true;


    }
//用电影标题填充列表
私有列表movieTitles=新列表(){“movie1”、“movie2”、“movie3”};
//然后绑定数据源
movieList.ItemSource=电影字幕;

套接字是如何起作用的?这是ASP.NET web表单吗?什么样的UI技术?WF?WPF?WebForms?如果这些是TCP套接字,我认为它们是,那么接收代码也是错误的。TCP是一种流协议,您必须准备好接收多个数据块。没有保证您在一次呼叫中接收所有数据。如果您将否决我的答案您至少可以给出一个解释它不起作用,因为如果是WPF,如果列表将从代码中更改,您至少需要一个可观察的集合。否则GUI将不会显示任何更改。我没有否决,但您的答案是错误的。感谢您的回答和澄清Philip。这是有道理,但用户界面不是由OP指定的,所以我只是猜测一下。我不在乎我错了,但如果有人不告诉我为什么我错了,我就无法了解。
//populate your List with your movie titles
private List<String> movieTitles = new List<string>() { "movie1", "movie2", "movie3" };
//Then bind the datasource
movieList.ItemSource = movieTitles;