C# - ListView不会从不同的表单刷新

问题描述 投票:0回答:2
// PaddlerList (Form 1)
        public void RefreshListView()
        {
            PaddlerListView.Items.Clear();
            PaddlerToList();
            PaddlerListView.Refresh();
            Console.WriteLine("Refresh....");
        }
        public void PaddlerToList() // Just adds 
        {
            for (int i = 1; i < Main.paddlerList.Count(); i++) // Repeats for all
            {
                string[] array = new string[4];
                ListViewItem item;
                array[0] = Main.paddlerList[i].FirstName.ToString();
                array[1] = Main.paddlerList[i].LastName.ToString();
                array[2] = Main.paddlerList[i].Weight.ToString();
                array[3] = Main.paddlerList[i].PreferredSide.ToString();
                item = new ListViewItem(array);
                PaddlerListView.Items.Add(item);
            }
        }

        private void RefreshList_button_Click(object sender, EventArgs e)
        {
            RefreshListView();
        }


// NewPaddler (Form 2)
            private void SubmitPaddler_button_Click(object sender, EventArgs e)
            {
            // Code here
            PaddlerList ListViewRefresh = new PaddlerList(); // Creates an instant of the other form, so it can run the procedure
            ListViewRefresh.RefreshListView();
            }

添加新的paddler(按下提交按钮)后,控制台输出“Refresh ....”,表示该函数已运行,但ListView不刷新

但是,当我在与ListView相同的窗体上设置按钮时,按下按钮时,它会使用新项刷新ListView。

我无法弄清楚这里的问题是什么?我认为这与ListView的保护级别有关。

谢谢!

c# windows forms listview refresh
2个回答
0
投票

当创建一个新的PaddlerList对象时,所有成员变量(如你的情况下,Items)都会重新开始。我认为你需要将原来的PaddlerList传递给你的第二张表格才能实现正确的表格。


0
投票

我找到了解决方案:

新的Paddler表格

    // NewPaddler Form

PaddlerList ListObject_global = null;
public NewPaddler(PaddlerList PaddlerList_Object)
{
  InitializeComponent();
  FormBorderStyle = FormBorderStyle.FixedDialog;
  ListObject_global = PaddlerList_Object;
}


if (ListObject_global != null)
{
  ListObject_global.RefreshListView(); // Runs function in PaddlerList
}

桨手名单表格

// PaddlerList Form
public void RefreshListView()
{
  PaddlerToList();
  PaddlerListView.Refresh();
  Console.WriteLine("Refresh....");
}
© www.soinside.com 2019 - 2024. All rights reserved.