2014-02-08 2 views
0

다른 클래스에서 정적 메서드가 아닌 메서드를 호출하고 싶습니다. 방법은 내가 원하는 자신의 Windows Form 컨트롤 텍스트 속성을 변경 호출합니다. 코드 안에 있습니다 :다른 클래스/폼에서 비 정적 메서드 호출

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

여전히 인스턴스가 필요합니다. 폼이 Valtas_angolra()에 액세스하기 위해 call_nonstatic()으로 전달되었습니다. call_nonstatic()에 Form에 전달할 매개 변수를 추가하십시오. 전의. call_nonstatic (Form f) – user3288049

관련 문제