簡體   English   中英

在另一個類/表單中調用非靜態方法

[英]Call a non-static method in another Class/Form

我想在另一個類中調用非靜態方法。 我想要調用的方法改變了自己的Windows窗體控件的Text屬性。 它在代碼中:

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”方法的Form已經打開了。 如果可能的話,我需要使用舊實例。

如果您需要更多細節,請詢問。

將靜態方法傳遞給要更改的表單實例。

編輯:

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);
    }

你的Valtas_angolra()函數被標記為私有,所以即使你有一個表單實例,你也無法在另一個類中調用它。 如果您將其更改為公開,那么一旦您擁有該表單的實例,它應該能夠。

嘗試通過添加參數傳遞給當前函數訪問表單。

你可以試試這個:

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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM