2014-10-12 2 views
1

VS2013 Pro, WinForms를 사용하면 디버거가 내 이벤트 처리기를 계속 삭제합니다. (나는 그들을 Form.Designer.cs 파일에 넣는다)디버거가 내 코드를 삭제하는 이유는 무엇입니까?

나는 최근에 알아 차리기 시작했고 나는 어떤 설정도 변경하지 않았다고 확신한다.

다른 사람이 복제하거나 내 시스템에있는 것일 수 있습니까?

단계 복제하기 :

  1. 는 기본 컨테이너 둥지 다른 스플릿 컨테이너의 패널이 내부 분할 컨테이너를 추가> 새 프로젝트 C#을 윈폼
  2. 을 만듭니다.
  3. Form.Designer.Cs 파일에서 중첩 패널 1 컨테이너에 Click 이벤트 처리기를 연결합니다.
  4. 실행. - 클릭 컨테이너 - 잘 작동합니다.
  5. 디버거 종료> 중첩 패널의 색상 속성 변경 1.
  6. 실행> 더 이상 클릭 할 수 없습니까?
  7. 코드 검사> 이벤트 처리기가 삭제 되었습니까?
+6

'Form.Designer.cs' "do not modify"라고하는 것입니까? 'Form.cs'에 코드를 넣으면 어떻게 될까요 –

+0

그래,하지만 항상 거기에 코드를 작성했습니다! 그것을 깔끔하게 유지하십시오. – KidCode

+5

@KidCode 그리고 파일을 수동으로 수정해서는 안된다는 경고를 듣는 것이 좋습니다. – Dan

답변

4

당신은 당신의 이벤트 핸들러가 수동으로 다음 언제든지이 Form.Designer.cs이 재생됩니다 디자이너에서 뭔가를 변경하고 이벤트 핸들러에게 (코드에 수동으로 추가하는 사람)

삭제됩니다 추가 한 경우 당신 컨트롤 속성에서 이벤트 처리기를 추가해야합니다. 당신은 디자이너에서이 코드를 예를 들어

:

myControl.Click += myClickHandler; 

는 언제 삭제됩니다 전체 .Designer.cs 파일이 재생되기 때문에 당신은 디자이너에서 뭔가를 변경하고 어떤 이유로 VS입니다 수동으로 추가 된 이벤트 핸들러를 인식하지 못합니다.

당신, 당신은 (디자이너에서) 컨트롤의 속성 창에서 이벤트 처리기를 추가하는 경우 생성 된 코드는 다음과 같이 것을 볼 것이다 :

myControl.Click += new EventHandler(myClickHandler); 

또 다른 해결 방법은 외부 핸들러를 추가하는 것입니다. Designer.cs 클래스를 사용하지만 쉬운 방법은 Designer에서 처리기를 추가하는 것입니다.