繁体   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