代码之家  ›  专栏  ›  技术社区  ›  RobertPitt

带有自动更新的ListsView绑定

  •  1
  • RobertPitt  · 技术社区  · 15 年前

    我正在开发一个应用程序,它使用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(花名册);

    我需要知道的是如何创建一个自定义列表类,然后将其绑定到witch持有的表单 列表视图 要素

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

    希望你们能帮助我


    编辑:

    如果我可以有两个类,一个用于个人联系人,另一个用于保存集合,就像这样:

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

    这也不错。

    1 回复  |  直到 15 年前
        1
  •  2
  •   Gage    15 年前

    你可以创建一个联系人类

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

    如果这对你有用,请告诉我。