2014-02-08 52 views
0

我想在另一個類中調用非靜態方法。我想調用的方法更改自己的Windows窗體控件文本屬性。它在代碼中:在另一個類/表中調用非靜態方法

private void Valtas_angolra() 
{ 
    //Angol kultúra értékül adása a 'cul' változónak. 
    cul = CultureInfo.CreateSpecificCulture("en-US"); 

    //Egyes elemek 'Text' tulajdonságainak beállítása a 'Res.en.resx' fájlból. 
    this.Text = res_man.GetString("Termekek_kezelese_From", cul); 
    Termek_adatok_Groupbox.Text = res_man.GetString("Termek_adatok_Groupbox", cul); 
    Termekkod_Label.Text = res_man.GetString("Termekkod_MIND_Label", cul); 
    Termeknev_Label.Text = res_man.GetString("Termeknev_MIND_Label", cul); 
} 

如何查看從.resx文件中獲取文本的方法。

現在,我想在此函數調用另一個類,例如:

namespace EcoHelp 
{ 
    class Kozos_fuggvenyek 
    { 
     public static void call_nonstatic() 
     { 
       //calling here 
     } 
    } 
} 

我知道,我可以用一個新的實例,但來這裏的問題,因爲形式,其中「Valtas_angolra 「方法已經聲明,已經打開。所以我需要使用舊的實例,如果可能的話。

如果你需要更多的細節問問。

回答

0

你可以試試這個:

namespace EcoHelp 
{ 
    class Kozos_fuggvenyek 
    { 
     public static void call_nonstatic(Form form) 
     { 
      //Angol kultúra értékül adása a 'cul' változónak. 
      var cul = CultureInfo.CreateSpecificCulture("en-US"); 

      //Egyes elemek 'Text' tulajdonságainak beállítása a 'Res.en.resx' fájlból. 
      form.Text = form.res_man.GetString("Termekek_kezelese_From", cul); 
      form.Termek_adatok_Groupbox.Text = form.res_man.GetString("Termek_adatok_Groupbox", cul); 
      form.Termekkod_Label.Text = form.res_man.GetString("Termekkod_MIND_Label", cul); 
      form.Termeknev_Label.Text = form.res_man.GetString("Termeknev_MIND_Label", cul); 
     } 
    } 
} 

你要揭露這些領域類Valtas_angolra()

  • Termek_adatok_Groupbox
  • Termekkod_Label
  • res_man
內公共屬性

然後像這樣調用它:

private void Valtas_angolra() 
{ 
    Kozos_fuggvenyek.call_nonstatic(this); 
} 
1

將您的靜態方法傳遞給您要更改的窗體的實例。

編輯:

class Kozos_fuggvenyek 
    { 
     public static void call_nonstatic(Form yourForm) 
     { 
       //Do what you want to your form. 
     } 
    } 

然後調用它像這樣:

private void Valtas_angolra() 
    { 
      Kozos_fuggvenyek.call_nonstatic(this); 
    } 
+0

請給我看一些小代碼片段。 – Gabor

1

你Valtas_angolra()函數被標記爲私有的,所以即使你有你的窗體的一個實例,你將無法在其他班級中稱呼它。如果您將其更改爲公開,那麼一旦您擁有該表單的實例,就應該可以這樣做。

嘗試通過傳遞一個添加的參數來讓當前函數訪問表單。

+0

我將其更改爲公開,但當我嘗試撥打電話時,我收到一條錯誤消息: 「非靜態字段,方法或屬性需要對象引用」 – Gabor

+0

您仍然需要您的實例表單傳入call_nonstatic()以便訪問Valtas_angolra()。添加一個參數以將表單傳遞給call_nonstatic()。恩。 call_nonstatic(Form f) – user3288049

相關問題