C# 可以更新其数据绑定的DataGrid?

C# 可以更新其数据绑定的DataGrid?,c#,winforms,datagridview,C#,Winforms,Datagridview,我正在寻找一种开箱即用的方法,将表单上的GridView绑定到BindList,该BindList会经常更新并维护当前条目 我想在GridView中显示一些客户端对象。每隔几秒钟,我的表单就会读取一个xml文件,其中包含客户端的最新信息(名称、变量编号、变量编号、状态)。我希望能够在不破坏选择的情况下更新网格中的信息 这可以开箱即用吗?如果DJ KRAZE将他的评论转移到一个答案上,那么他的功劳将归他所有。虽然我已经研究了如何实现这一点,但我没有发现任何直接的说法,即它将保持选择等 我目前的解决

我正在寻找一种开箱即用的方法,将表单上的GridView绑定到BindList,该BindList会经常更新并维护当前条目

我想在GridView中显示一些客户端对象。每隔几秒钟,我的表单就会读取一个xml文件,其中包含客户端的最新信息(名称、变量编号、变量编号、状态)。我希望能够在不破坏选择的情况下更新网格中的信息


这可以开箱即用吗?

如果DJ KRAZE将他的评论转移到一个答案上,那么他的功劳将归他所有。虽然我已经研究了如何实现这一点,但我没有发现任何直接的说法,即它将保持选择等

我目前的解决办法是

using (var reader = new StreamReader(new FileStream(clientFile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)))
            {
                var ser = new XmlSerializer(typeof(ClientList));
                var temp = (ClientList)ser.Deserialize(reader);

                foreach (var client in temp.Items)
                {
                    if(clientWatchers.Any(c => c.Handle == client.Handle))
                    {
                        var c = clientWatchers.First(w => w.Handle == client.Handle);
                        c.SyncNumber = client.SyncNumber;
                        c.PsNumber = client.PsNumber;
                        c.IsHalted = client.IsHalted;
                    }
                    else
                    {
                        clientWatchers.Add(client);
                    }
                }

                var handles = clientWatchers.Select(c => c.Handle).ToArray();

                foreach (var handle in handles)
                {
                    if(temp.Items.All(c => c.Handle != handle))
                        clientWatchers.Remove(clientWatchers.First(c => c.Handle == handle));
                }

                //foreach (var client in temp.Items)
                    //clientWatchers.Add(client);
                dgClientView.DataSource = clientWatchers;

            }

你到底做了什么尝试或研究了。。?一个简单的谷歌搜索可能会有所帮助,这可以开箱即用吗?对