2016-08-27 3 views
0

C 프로젝트의 약 20 개의 폼이 있습니다. 클래스에 메서드를 만들었습니다. 나는 모든 20 가지 폼이 Load 이벤트에서 그 메소드를 호출하기를 원한다. 각 폼의 Load 이벤트에 Call 문을 하나씩 넣을 수 있습니다. 그러나 앞으로 양식이 늘어날 수 있습니다. 또한, 일부 폼이 Load 이벤트에서 Call 문을 실수로 작성하지 못하게 될 수도 있습니다.여러 폼이로드 이벤트에서 동일한 메서드를 호출하는 방법

특정 방식으로 프로젝트의 모든 형태의로드 이벤트를 처리 할 수 ​​있다는 논리가 있습니까? System.Reflection을 사용하여 프로젝트의 모든 양식 목록을 가져올 수 있습니다. 그렇다면이 모든 폼의로드 이벤트를 클래스의 동일한 특정 메소드에 첨부 할 수 있습니까?

답변

2

당신은 당신의 사용자 지정 양식을 만들고 Onload (또는 이벤트)

using System.Collections.Generic; 
using System.Text; 
using System.Windows.Forms; 

namespace test 
{ 
    public class MyForm : Form 
    { 
     protected override void OnLoad(EventArgs e) 
     {     
      MessageBox.Show("test"); //call your method(s) 
      base.OnLoad(e); 
     } 
    } 
} 

을 무시하고 새로운 형태의 수

namespace CustomFormProject 
{ 
    public partial class Form1 : MyForm 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      //MessageBox will be shown automatically from your base (MyForm) class 
      //other codes 
     } 
    } 
} 
0

당신은 같은 것을 할 수 있습니다

public partial class Form2 : MainForm 
public partial class Form3 : MainForm 
... 
... 
... 
public partial class Form19 : MainForm 
public partial class Form20 : MainForm 

는 다른 양식에서 MainForm 상속과 Form_Load 이벤트에 메서드를 호출합니다.

MainForm은 메소드를 작성한 클래스로,이 메소드를 다른 양식에 액세스하려는 클래스입니다.

아래 예제는 MainForm에있는 방법이라고 가정합니다.

public partial class Form2 : MainForm 
          ^^^^^^^^ 
이제

,이 메서드를 호출 :

public partial class MainForm : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 
    public void Msg() 
    { 
     MessageBox.Show("Hello"); 
    } 
} 

전화 먼저 MainForm 클래스에서 상속으로 Form2_Load 이벤트에 방법 Msg() 마찬가지로

private void Form2_Load(object sender, EventArgs e) 
{ 
    Msg(); 
} 

을, 당신은 같은 일을 나머지는 양식입니다.

+0

다단계 상속의 이러한 생각은하지만 ... 괜찮 경우 각 Form의 Parent 클래스를 변경해야합니다. 그런 다음 각 Form의 Load 이벤트에 메서드의 Call 문을 넣을 수도 있습니다. 실제로 20 가지 Forms에서 아무 것도 변경하지 않는 방법이 있는지 물어보고 싶습니다. 그리고 내 메서드는 모든 20 가지 Forms의 Load 이벤트를 처리 할 수있게됩니까? 제 질문이 어리 석다면 사과하십시오. –

관련 문제