0

我想刷新位于form1. 我创建了触发公共 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();

   }
4

2 回答 2

0

我有点不清楚您要做什么,但是从您的标题看来,您想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);
    }
}
于 2013-07-18T01:38:49.853 回答
0

也许需要刷新。

public void RefeshListView()
{

   this.listView1.BeginUpdate();

   MessageBox.Show("s");//this shows! only:\ !?!?!?
   listView1.Visible = false;
   listView1.Height = 222;
   listView1.EndUpdate();
   listView2.Clear();
   listView2.refresh();
}
于 2013-07-18T01:08:38.420 回答