C# 具有自动更新功能的ListView绑定

C# 具有自动更新功能的ListView绑定,c#,listview,list,C#,Listview,List,我有一个我正在开发的应用程序,它使用Jabber库连接到Jabber服务器并接收联系人等 我已经为聊天建立了所有的登录系统和界面,但现在我正在研究如何将联系人的数据绑定到列表视图 我有一个当联系人在线时调用的函数,如下所示 //AppController.cs public void XmppConnection_OnRosterItem(Object Sender, RosterItem RosterItem) { if (LoginWindow.ActiveForm.InvokeRe

我有一个我正在开发的应用程序,它使用Jabber库连接到Jabber服务器并接收联系人等

我已经为聊天建立了所有的登录系统和界面,但现在我正在研究如何将联系人的数据绑定到
列表视图

我有一个当联系人在线时调用的函数,如下所示

//AppController.cs
public void XmppConnection_OnRosterItem(Object Sender, RosterItem RosterItem)
{
    if (LoginWindow.ActiveForm.InvokeRequired)
    {
        LoginWindow.ActiveForm.BeginInvoke(
           new XmppClientConnection.RosterHandler(XmppConnection_OnRosterItem),
              new object[] { Sender, RosterItem}
        );
        return;
    }
    //UPDATE HERE
}
这个想法是有一个类,比如
ContactList
,这样当调用上述函数时,我就可以转到ContactList.addlotster(花名册)

我需要知道的是如何创建自定义列表类,然后将其绑定到包含
ListView
元素的表单

如果可能的话,设置一个更新间隔来重新编译ListVew

希望你们能帮助我


编辑:

如果我可以有两门课,一门是个人接触课,另一门是收藏课:

Contact C = new Contact(Roster.Name,Roster.Jid,Roster.Group);
ContactList.Add(C);

这也很好。

您可以创建一个联系人类,只需创建一个联系人列表

List<Contact> ContactList=new List<Contact>();
ContactList.Add(Roster);
过度隐藏ToString函数使您可以更轻松地控制列表框中显示的内容

public Form1()
        {
            InitializeComponent();
            ContactList C = new ContactList();
            C.Add(new Contact("Name","Jid","Group"));
            C.Add(new Contact());
            C.Add(new Contact("Test","2","Something"));
            for (int i = 0; i < C.Count; i++)
            {
                listView1.Items.Add(C[i].ToString());
            }
        }
public Form1()
{
初始化组件();
联系人列表C=新联系人列表();
添加(新联系人(“姓名”、“Jid”、“集团”);
C.添加(新联系人());
添加(新触点(“测试”、“2”、“某物”);
对于(int i=0;i

让我知道这是否对您有效。

@Coding Gorilla,是的,这是Win Forms Age下面的答案是一个不错的答案,我询问WinForms的原因是WinForms ListView不会自动为您刷新列表,您必须自己来做。您可以在下面看到我关于这方面建议的评论。您可以创建System.Windows.Forms.Timer并在勾号事件中进行更新。这发生在UI线程上,因此您不必担心交叉线程操作(如使用System.threading.Timer)。非常感谢您的回答,我已经创建了
联系人列表
联系人
类,您能告诉我如何绑定表单吗?如果您无法将它们直接绑定到ListView控件,实际上,您需要迭代列表并将它们添加到ListView.Items集合中。再一次,我建议你做一个计时器。勾选事件。我将接受你的回答,因为你已经给我指明了方向,你是我的选择:),任何方式谢谢你的帮助,非常感谢。
class Contact
    {
        public string _Name;
        public string _Jid;
        public string _Group;
        public Contact()
        {
            _Name = "Test";
            _Jid = "One";
            _Group = "Two";
        }
        public Contact(string Name, string Jid, string Group)
        {
            _Name = Name;
            _Jid = Jid;
            _Group = Group;
        }
        public override string ToString()
        {
            return _Name+" "+_Jid+" "+_Group;
        }

    }
public Form1()
        {
            InitializeComponent();
            ContactList C = new ContactList();
            C.Add(new Contact("Name","Jid","Group"));
            C.Add(new Contact());
            C.Add(new Contact("Test","2","Something"));
            for (int i = 0; i < C.Count; i++)
            {
                listView1.Items.Add(C[i].ToString());
            }
        }