2011-10-06 11 views
0

어떤 이벤트는 formX_load (..) 이상의 이벤트가 실행될 수있는 불운이있는 것 같습니다. 그게 내가 여기있는 누군가가 나를 도울 수 있기를 바란다.Form1_Move()가 트리거되지 않습니다

빈 프로젝트를 시작하여 레이블을 label1에 추가하고 MSDN 예제에서 코드를 복사했습니다. (필자 자신의 레이블 텍스트에 추가).

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.move%28v=vs.80%29.aspx

private void Form1_Move(object sender, System.EventArgs e) 
{ 
this.Text = "Form screen position = " + this.Location.ToString(); 
label1.Text = "You Moved Me!"; 
} 

모든 컴파일 및 실행,하지만 내가 이동하거나 레이블 텍스트 또는 양식의 텍스트를 변경하지 않습니다 형성 크기를 다시 얼마나 중요하지 않습니다.

같은 문제가있는 OnMove, OnMouseMove 및 LocationChanged 예제를 시도해 보았습니다 ... 결코 트리거 된 적이없는 것 같습니다.

무엇이 여기에 있습니까? 이것은 너무 쉽게 망쳐 놓을 수 있지만, 슬프게도 ...

시간 내 주셔서 감사합니다. OnMove이 일을해야 재정의

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 

     this.Move +=new EventHandler(Form1_Move); 
    } 

    private void Form1_Move(object sender, System.EventArgs e) 
    { 
     this.Text = "Form screen position = " + this.Location.ToString(); 
    } 

} 
+1

실제로 OnMove 이벤트 처리기를 추가 했습니까? – Icarus

+0

나는 여기 사지에 나가서 아니오라고 말하고있다. 나는 적어도 5 년 동안 C#을 건드리지 않았으며 녹슬지는 ... – challengerTA

+0

@challenferTA 내 대답을 참조하십시오. – Icarus

답변

2

이 작동합니다. 재정의 한 메서드에서 기본 클래스 OnMove 메서드를 호출 했습니까?

_Move 이벤트의 경우 양식의 인스턴스를 만들 때 이벤트 처리기를 연결 했습니까? 같은

뭔가 :

프로그램 내 대하여 의견에 언급 한 가득 차거나 핸들러를 추가하는 방법을 설명 이미이 답이 있습니다
this.Move += this.Form1_Move; 
+0

그럼 잘 작동합니다! 경험적으로 볼 때 모든 이벤트에 대해 처음부터 그런 이벤트 핸들러를 만들어야한다는 것을 알고 있습니까? 몇 년 동안 C#을 사용하지 않아도 모든 것을 다시 배워야했습니다. 고마워요! – challengerTA

2

및 선호되는 방법입니다 :

+0

나는 그 어떤 것도 생각하지 않았습니다. 나는 MSDN의 "예제"가 예제로 작동한다는 것을 추측하고 있었고 작동하도록하기 위해 다른 작업을 수행 할 필요가 없었습니다. 분명히 치명적인 오류입니다. 이벤트 및 처리기에 참여하는 기본 방법은 무엇입니까? 아니면 Samich의 방법이 더 적절합니까? 둘 다 잘되어서 고맙습니다. – challengerTA

+0

OnMove를 재정의하거나 이벤트를 처리할지 여부는 개인적인 선택입니다. 나는 항상 * 자신의 클래스 *에서 On * 메서드를 재정의하는 것이 바람직하다고 생각해 왔습니다. 분명히, 다른 누군가의 수업을 사용하는 경우 이벤트를 처리해야합니다. –

+0

다음 링크는 도움이 될 수 있습니다. http://stackoverflow.com/questions/3670806/form-load-event-or-override-onload –

1

. Visual Studio에서이 작업을 수행하려면 양식 디자이너를로드하고 속성 (일반적으로 오른쪽 하단에 있음)을 살펴보고 이벤트 탭을 클릭 한 다음 OnMove 이벤트를 두 번 클릭하면됩니다. 일단 그것을 두 번 클릭하면 자동으로 처리기가 추가되어 메서드 본문으로 이동하여 코드를 삽입 할 수 있습니다.

enter image description here

+0

나를 위해 스크린 샷을 찍었습니까? 미래를 위해 매우 유용합니다. 내가 VB6를 할 때 그런 것을하는 것을 기억합니다. 도움에 다시 한번 감사드립니다.나는 하나 이상의 상향 화살표를 가지고 있었으면 좋겠다. – challengerTA

+0

@challengerTA 감사와 1 upvote가 충분합니다. ;) – Icarus

관련 문제