C#-listview中没有更新

C#-listview中没有更新,c#,winforms,listview,C#,Winforms,Listview,我有一个小问题,我正在尝试更新我的listView(ListClient) private ListView initializeLstView() { var lstView=newlistview(); var lstViewItem=新建ListViewItem(); 对于(uint i=0;i

我有一个小问题,我正在尝试更新我的listView(ListClient)

private ListView initializeLstView()
{
var lstView=newlistview();
var lstViewItem=新建ListViewItem();
对于(uint i=0;i<18;++i)
{
lstViewItem=lstView.Items.Add(“免费”);
lstViewItem.SubItems.Add(“免费”);
}
返回(视图);
}
私有ListView setNamesToLstView()
{
var lstView=initializeLstView();
尝试
{
对于(uint i=0;i<18;++i)
{
lstView.Items[(int)i].Text=clients.GetName(i);
lstView.Items[(int)i]。子项[1]。Text=“{+i.ToString()+”}”;
}
lstView.Update();
}
捕获(例外a)
{
MsgBox(a.ToString());
}
返回(视图);
}
私有无效btnRefreshClients_单击(对象发送方,事件参数e)
{
listClients=setNamesToLstView();//此处不更新
}
但是在这里,我的listView什么都不包含,没有更新/没有刷新,为什么

如何解决此问题?

问题是您正在将项目添加到另一个列表视图

listClients
是一个成员变量,它指向先前添加到
控件的
ListView
。当您想向该列表视图添加项目时,应该使用
listClients.items.add(…)
将项目准确地添加到该对象


但是目前您已经在方法中创建了一个
列表视图
,并向其中添加了项,最后返回它并将其分配给
列表客户端
。它不会使新创建的列表视图显示在表单上。它使
listClients
变量仅指向新创建的控件,而您可以看到以前创建的
ListView

什么是
listClients
?listClients是我的ListView
private ListView initializeLstView()
        {
            var lstView = new ListView();
            var lstViewItem = new ListViewItem();
            for (uint i = 0; i < 18; ++i)
            {
                lstViewItem = lstView.Items.Add("Free");
                lstViewItem.SubItems.Add("Free");
            }
            return (lstView);
        }

        private ListView setNamesToLstView()
        {
            var lstView = initializeLstView();
            try
            {
                for (uint i = 0; i < 18; ++i)
                {
                    lstView.Items[(int)i].Text = clients.GetName(i);
                    lstView.Items[(int)i].SubItems[1].Text = "{" + i.ToString() + "}";
                }
                lstView.Update();               
            }
            catch (Exception a)
            {
                Interaction.MsgBox(a.ToString());
            }
            return (lstView);
        }

        private void btnRefreshClients_Click(object sender, EventArgs e)
        {
            listClients = setNamesToLstView(); // Here, no update
        }