如何从form2控制位于form1中的listview来刷新它
本文关键字:listview 中的 刷新 form1 form2 控制 | 更新日期: 2023-09-27 18:23:35
我想刷新位于form1
中的listview1。我创建的代码激发了一个公共void来刷新它或使其成为listview1.visible = false;
除了messagebox.show("test");
什么都不起作用
我该如何让它发挥作用?
public void RefeshListView()
{
this.listView1.BeginUpdate();
MessageBox.Show("s");//this shows! only:' !?!?!?
listView1.Visible = false;
listView1.Height = 222;
listView1.EndUpdate();
listView2.Clear();
}
我有点不清楚你想做什么,但从你的标题来看,听起来你想影响ListView
表格1来自表格2。我假设Form2是从Form1创建的。在你的情况下,我可以想出两种方法来做到这一点,第一种是创建一个自定义构造函数,并将表单实例传递给它,或者在显示表单时分配所有权。第二种是在Form2上创建一个定制事件,并在Form1中订阅它。
第一种方法:
在Form1中显示Form2时使用frm2.Show(this);
在Form2中,当您想调用刷新方法时,请使用((Form1)Parent).RefreshListView();
或为Form2 创建自定义构造函数
Form1
public partial class Form1 : Form
{
Form2 frm2;
public Form1()
{
InitializeComponent();
frm2 = new Form2(this);
frm2.Show();
}
void frm2_RefreshList(object sender, EventArgs e)
{
RefreshListView();
}
public void RefreshListView()
{
this.listView1.BeginUpdate();
MessageBox.Show("s");//this shows! only:' !?!?!?
listView1.Visible = false;
listView1.Height = 222;
listView1.EndUpdate();
listView1.Clear();
}
}
Form2
public partial class Form2 : Form
{
Form1 frm1;
public Form2()
{
InitializeComponent();
}
public Form2( Form frm)
{
InitializeComponent();
frm1 = (Form1)frm;
}
private void button1_Click(object sender, EventArgs e)
{
frm1.RefreshListView();
}
}
第二种方法:
Form1
public partial class Form1 : Form
{
Form2 frm2;
public Form1()
{
InitializeComponent();
frm2 = new Form2();
frm2.RefreshList += new EventHandler(frm2_RefreshList);
frm2.Show();
}
void frm2_RefreshList(object sender, EventArgs e)
{
RefreshListView();
}
public void RefreshListView()
{
this.listView1.BeginUpdate();
MessageBox.Show("s");//this shows! only:' !?!?!?
listView1.Visible = false;
listView1.Height = 222;
listView1.EndUpdate();
listView1.Clear();
}
}
Form2
public partial class Form2 : Form
{
public event EventHandler RefreshList;
public Form2()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
RefreshList(this, EventArgs.Empty);
}
}
可能需要刷新。
public void RefeshListView()
{
this.listView1.BeginUpdate();
MessageBox.Show("s");//this shows! only:' !?!?!?
listView1.Visible = false;
listView1.Height = 222;
listView1.EndUpdate();
listView2.Clear();
listView2.refresh();
}