2012-08-29 4 views
1

부분 클래스의 함수가있는 경우 (예를 들어 'Button 2'클릭 처리기라고 가정) 폼 디자이너에서 Intellisense 또는 Button 2를 두 번 클릭합니다 지금은 무엇이든간에) 항상 새로운 부분 클래스 모듈 'Button2.cs'가 아니라 'Form1.cs 모듈'(나쁘거나 정의되지 않은 라인)에 나를 던졌습니다. 'Button1'을 두 번 클릭하면 '올바른'동작이 수행됩니다. 'Form1.cs를'에서부분 클래스 및 컨트롤을 두 번 클릭하십시오.

: 예를 들어

'Button2.cs'(공용 부분 클래스)에서
namespace test01 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      MessageBox.Show("Button 1 pressed"); 
     } 

    } 
} 

:

namespace test01 
{ 
    public partial class Form1 : Form 
    { 


     private void button2_Click(object sender, EventArgs e) 
     { 
      MessageBox.Show("Button 2 pressed"); 
     } 
    } 
} 

이것은 내가 '뭔가 VS2008에서 VS2010에서 보았으며이를 해결할 분명한 방법이 없습니다.

어떤 도움이 필요합니까?

+0

당신이 코드를 분할하는 경우 아니, 동의, 그것은 나던 자동차를 찾을 :

이 같은 폴더 구조를 출발점으로 무리한되지 않을 것 원본 form.cs 파일은 예상대로 다른 파일에서 올바른 파일을 선택합니다. – BugFinder

+0

같은 양식에 대해 새 부분 수업을 만드는 이유는 무엇입니까? 두 번째 부분 클래스를 만드는 데 필요한 유일한 시간은 ORM을 사용하고 자동 생성 클래스를 확장해야하는 경우입니다. 이 두 부분은 응용 프로그램의 "보기"부분이므로 이벤트 처리기를 분리하는 것은 실제로 "우려"(우려의 분리와 반대)를 공유하므로 필요하지 않은 것처럼 보입니다. – Mike

답변

0

버튼이 아니기 때문에 양식을 디자인했기 때문입니다. 디자이너는 양식의 컨트롤에 대한 모든 이벤트 처리기가 (단추의 소스 코드가 아닌) 양식의 소스 코드에 있음을 (관습에 따라) 기대합니다. 이는 (일반적으로) button2.cs에서 클래스를 호출 할 때 이라는 이라는 이름을 정의해야하고 Button의 Name 속성이 "Button2"인 인스턴스를 정의해야한다고 생각하면 의미가 있습니다.

편집 : 개발자가 (손으로 그 클래스를 편집하기위한

부분 클래스는 클래스가 디자이너 또는 다른 코드 생성기에 의해 생성되는 매우 구체적인 특수 용도로 설계되었습니다, 그것은 일반적으로 안전하지 않은 코드 때문에 발전기는 나중에 나올 것이며 개발자의 손으로 직접 작성한 부분을 포함하여 파일을 덮어 씁니다. 부분 클래스를 사용하면 클래스가 두 개의 파일로 분할 될 수 있습니다. 하나는 생성되며 (이 경우 디자이너가 생성) 하나는 손으로 직접 작성한 코드를 의미합니다. 클래스가 "partial"로 정의되었으므로 컴파일러는 클래스의 다른 부분을 다른 파일에 정의 할 수 있음을 알고 있습니다.

설명하는 것처럼 여러 기능 영역이있는 프로젝트의 경우 해당 기능을 독립적으로 테스트 할 수 있도록 UI와 관련이없는 클래스로 구성한 다음 UI 클래스에서 호출합니다 필요에 따라. 어떻게 작동하는지 아이디어를 위해 Model-View-Controller 또는 Model-View-ViewModel 디자인 패턴과 같은 개념을 조사해야합니다. 당신의 잘못된 하나를 삭제하면, 그러나,

Root 
|-GUI   // Contains folders related to GUI elements 
| |-Forms  // Contains your forms 
| |-Controls // Contains any custom controls 
|-Common  // Contains folders for common functionality 
| |-IO   // Contains classes relating to I/O 
| |-Diagnostics // Contains classes relating to diagnostics 
|-Logic   // Contains classes folders to specific business use cases 
    |-UseCase1 // Contains classes folders to use case #1 (use a better name, obviously) 
    |-UseCase2 // Contains classes folders to use case #2 
+0

감사합니다.하지만 평소와 같이 몇 가지 질문이 더 많습니다. – user1408942

+0

감사합니다.하지만 평소와 같이 더 많은 질문을하게됩니다. 버튼은 제가 문제로 인식 한 것을 보여주는 예일뿐입니다. 아마도 '부분 수업'을 어떻게 사용해야하는지 모르겠다. 나는 (매우!) 올드 스쿨 프로그래머는 객체, 클래스, 구조 등을 쉽게 알지 못합니다. 둘째로,이 스레드의 범위를 훨씬 넘어서는 것으로, Windows Forms, 5 개 또는 6 개의 탭, 각 탭의 기능 (I/O, 진단)이있는 프로젝트를 구성하는 방법을 간략히 요약 할 수 있습니까? , 데이터 입력 등). 각 탭마다 고유 한 클래스 함수가 ​​있어야합니까? – user1408942

+0

@ user1408942 자세한 내용은 편집을 참조하십시오. –

관련 문제