我有一个正在使用的应用程序,它使用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);
这也很好。
答案 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());
}
}
请告诉我这是否适合您。