2015-09-04 37 views
-2

我'嘗試從Form2的執行虛空和更新Form1中我試圖將它添加按鈕點擊也Form_Close,還取決於Form1_Activated,Form1_Enter但仍然沒有進展運行虛空從形式1使用表2

這裏是我試過:(但在做沒有運氣它的工作...

Form1.cs的

public void LoadTable() 
{ 
    //Code to Populate Datagridview 
    string sql = ""; 
    SqlConnection Connection = new SqlConnection(Global.Connection); 
    SqlCommand CMD = new SqlCommand(sql, Connection); 

    SqlDataAdapter DA = new SqlDataAdapter(); 
    DA.SelectCommand = CMD; 

    DataSet DS = new DataSet(); 
    DA.Fill(DS); 

    ApplicantsGrid.DataSource = DS.Tables[0].DefaultView; 
} 
private void Form1Button_Click(object sender, EventArgs e) 
{ 
    Form2 Form2 = new Form2(); 
    Form2.showDialog(); 
} 

Form2.cs

private void Form2Button_Click(object sender, EventArgs e) 
{ 
     Form1 Form1 = new Form1(); 
     Form1.LoadTable(); 
} 

以及這是程序iam製作的主要問題:(

+2

其正常工作。 'new'創建一個* new *實例。 – Sayse

+0

好的問題是...表不會重新填充我的意思是它不會重新填充datagridview :( –

+0

在下一行輸入'Form1.Show();'。另外,它不是一個好主意,作爲它的類 – Sayse

回答

1

我很確定,你是你想做的事情。

您在Form1的新實例上調用LoadTable。正如Sayse所建議的那樣,您可能需要的是將其稱爲現有表格。

您可能想要在現有實例上調用它。你可能會實現,像這種情況,例如:

Form1中Button_Click代碼:

class Form1 
{ 
    public static Form1 Instance {get; private set;} 

    public Form1() 
    { 
     Instance = this; 
     //InitializeComponents and what ever else. 
    } 

    public void LoadTable() 
    { 
     //implementation 
    } 
} 

Form2的代碼:

private void Button_Click(object sender, EventArgs e) 
{ 
    if (Form1.Instance != null) //must be careful about this. 
    { 
     Form1.Instance.LoadTable(); //like this you will call the method on the existing instance of the form. 
    } 
} 
+0

以及事情是form1是第一種形式...然後我單擊form1上的按鈕以顯示form2在對話框模式,並有form2上的按鈕,使form1上的datagridview刷新/更新使用form1內的代碼...以及讓我試試你的答案:) –

+0

感謝您的答覆!它工作正如需要:)抱歉,如果我的問題不是那麼清楚......我認爲我的問題已經暗示我使用目前打開的表格:) –

0
public partial class Form1 : Form 
    { 
     internal static Form1 ViewForm1; // Make other form run Public void from Form1 

     public form1() 
     { 
      InitializeComponent(); 
      ViewForm1 = this; //Add this 
     } 
     public void DoSomething() 
     { 
      //Code here... 
     } 
} 


public partial class Form1 : Form 
    { 
     public form2() 
     { 
      InitializeComponent();    
      Form1.ViewForm1.ShowData(); // Call public void from form1 
     } 
    } 

 public partial class Form1 : Form 
 
     { 
 
      internal static Form1 ViewForm1; // Make other form run Public void from Form1 
 

 
      public form1() 
 
      { 
 
       InitializeComponent(); 
 
       ViewForm1 = this; //Add this 
 
      } 
 
      public void DoSomething() 
 
      { 
 
       //Code here... 
 
      } 
 
    } \t 
 
\t 
 

 
    public partial class Form1 : Form 
 
     { 
 
      public form2() 
 
      { 
 
       InitializeComponent();    
 
       Form1.ViewForm1.ShowData(); // Call public void from form1 
 
      } 
 
\t \t }

+0

請解釋爲什麼此代碼將回答OP的問題。根據SO指導原則,只有代碼片段不算作完整答案。 – danjuggler