C# - ListView 不会从不同的表单刷新
C# - ListView won't refresh from different form
// 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();
}
添加新桨手时(按下提交按钮),控制台输出"Refresh...."显示功能已运行,但ListView不刷新
但是,当我在与 ListView 相同的窗体上设置按钮时,当按下按钮时,它确实会用新项目刷新 ListView。
我不明白这是什么问题?我认为这与 ListView 的保护级别有关。
谢谢!
创建新的 PaddlerList
对象时,所有成员变量(如您的情况 Items
)都会重新开始。我认为您需要将原始 PaddlerList
传递给您的第二个表格才能实现正确的表格。
我找到了解决方案:
新桨手形态
// 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....");
}
// 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();
}
添加新桨手时(按下提交按钮),控制台输出"Refresh...."显示功能已运行,但ListView不刷新
但是,当我在与 ListView 相同的窗体上设置按钮时,当按下按钮时,它确实会用新项目刷新 ListView。
我不明白这是什么问题?我认为这与 ListView 的保护级别有关。
谢谢!
创建新的 PaddlerList
对象时,所有成员变量(如您的情况 Items
)都会重新开始。我认为您需要将原始 PaddlerList
传递给您的第二个表格才能实现正确的表格。
我找到了解决方案:
新桨手形态
// 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....");
}