我有兩個表單,第一個有一個資料網格視圖,第二個是資料輸入表單。我創建了一個重繪 第一個表單上的資料網格視圖的方法,但是我想在關閉第二個表單時呼叫它。我很快發現我無法從第二個表單呼叫第一個表單上的方法,所以我搜索了一下,發現當我打開第二個表單時,我需要使用 form1(this); 來初始化它;但是,當我這樣做時,我收到一條錯誤訊息:
'Form1' 不包含帶有 1 個引數的建構式
有誰知道為什么這不起作用,因為我從別人的解決方案中復制了這個?另外,我還需要在我的第二種形式中輸入什么才能以第一種形式呼叫該方法?
private void button2_Click(object sender, EventArgs e)
{
//Open New Record Form
Form1 form1 = new Form1(this);
form1.Show();
}
uj5u.com熱心網友回復:
'Form1' 不包含帶有 1 個引數的建構式
然后給它一個接受該引數的建構式。例如:
public class Form1 : Form
{
private Form2 _form2;
public Form1(Form2 form2)
{
_form2 = form2;
}
// the rest of the class
}
這里的想法是,如果任何給定的實體Form1需要一個實體Form2來完成其作業,那么它應該在其建構式上需要該實體。(您甚至可以在建構式中添加一些錯誤檢查,以確保傳遞的實體不是null例如。)然后,任何時候創建 的實體Form1,它都需要提供該依賴項。
然后,其中的任何操作Form1都可以訪問該_form2欄位中的該依賴項。
uj5u.com熱心網友回復:
我創建了一個重繪 第一個表單上的資料網格視圖的方法,但是我想在關閉第二個表單時呼叫它。
您可以做的是在 Form2 關閉時讓 Form1 更新 ITSELF。FormClosed當您創建和顯示 Form2的事件時,您將連接它:
// ... this is in FORM1 !!! ...
private void btnShowForm2_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.FormClosed = (s2, e2) => this.Update(); // <-- change to your "update" method name
f2.Show();
}
uj5u.com熱心網友回復:
private void button2_Click(object sender, EventArgs e){
this.Hide();
var form = new Form1();
form.Closed = (s, args) => this.Close();
form.Show();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/438745.html
