我想在另一个类中调用非静态方法。我想要调用的方法改变了自己的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已经打开了。所以如果可能,我需要使用旧实例。
如果您需要更多详细信息,请询问。
答案 0 :(得分: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);
}
答案 1 :(得分:1)
你的Valtas_angolra()函数被标记为私有,所以即使你有一个表单实例,你也无法在其他类中调用它。如果您将其更改为公开,则一旦您拥有表单实例,它应该能够。
尝试通过添加参数传递给当前函数访问表单。
答案 2 :(得分: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()
类中的公共属性然后这样称呼:
private void Valtas_angolra()
{
Kozos_fuggvenyek.call_nonstatic(this);
}