我從另一個類調用方法有問題。 Form1.cs
包含:不能調用不同形式的所有方法
public void RefreshTreeview()
{
MessageBox.Show("test");
this.treeView1.Nodes.Clear();
this.textBox10.Text = "test";
}
當我試圖從另一個調用類「Form2.cs」這個方法:
public void button2_Click(object sender, EventArgs e)
{
Form1 Obj = new Form1();
Obj.RefreshTreeview();
this.Close();
}
我只接收消息框的文本。 Treeview
不「清除」和textBox10
沒有dipslay「測試」。然而,當我試圖從調用方法相同的方法內部Form1
所有元素都執行:
private void toolStripButton1_Click(object sender, EventArgs e)
{
RefreshTreeview();
}
當然,這兩個類是公開的。請幫忙。 Regards
您正在創建Form1的新實例。這個實例有它自己的樹視圖和文本框。您正在查看的Form1實例未受您的代碼影響。因爲你沒有調用Obj.Show,所以這個實例不能顯示自己的文本框,你寫了單詞「Test」。相反,當您從第一個Form1實例調用該方法時,一切都按預期工作,因爲該方法適用於第一個實例擁有的樹視圖和文本框 – Steve
這可能是重複的。看看[this](http://stackoverflow.com/q/1157791/3165552) –
在form2 ctor中獲得form1實例,當然你必須在Form1類型的form2中有一個私有字段並在ctor中進行分配,然後在你button2單擊處理程序使用該字段。或僅在您的button2單擊處理程序的地方 - Form1 f =(Form1)Application.OpenForms [「Form1」]; – terrybozzio