ListView绑定与自动更新

时间:2010-07-15 19:26:02

标签: c# listview list

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

我已经为聊天添加了所有登录系统和界面,但现在我正在研究如何将联系人的数据绑定到ListView

我有一个在联系人上线时调用的功能,见下文

//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.AddRoster(Roster);

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

如果可能,设置更新间隔以重新编译ListVeiw?

希望你们能帮助我


编辑:

如果我可以为个人联系人分别设置2个课程,另一个课程设置如此:

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

这也很好。

1 个答案:

答案 0 :(得分:2)

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

List<Contact> ContactList=new List<Contact>();
ContactList.Add(Roster);

如何将ListView绑定到列表
http://www.vistax64.com/avalon/615-how-bind-listview-list-mystruct.html

不确定更新间隔。将它附加到某个事件并检查可能之间的时间? MouseMove(性能成本?)

其他人有什么想法吗?

修改

class ContactList:List<Contact>
    {
        public ContactList()
        {

        }
    }

您不需要在此课程中添加任何内容

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;
        }

    }

覆盖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());
            }
        }

请告诉我这是否适合您。