我有点不清楚您要做什么,但是从您的标题看来,您想ListView
从 Form2 影响对 Form1 的影响。我假设 Form2 是从 Form1 创建的。在您的情况下,您有两种我能想到的方法,第一种是创建一个自定义构造函数并将表单实例传递给它,或者在您显示表单时分配所有权。第二个是在 Form2 上创建一个自定义事件并在 Form1 中订阅它。
第一种方法:
在 Form1 中显示 Form2 时使用 frm2.Show(this);
在 Form2 中当您要调用刷新方法时使用((Form1)Parent).RefreshListView();
或为 Form2 创建一个自定义构造函数
表格1
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();
}
}
表格2
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();
}
}
第二种方法:
表格1
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();
}
}
表格2
public partial class Form2 : Form
{
public event EventHandler RefreshList;
public Form2()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
RefreshList(this, EventArgs.Empty);
}
}