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