문제

는 가장 좋은 방법은 무엇입제 Alt + F4 c#승 양식에서 사용자를 방지하기 위해 닫을 형성하는가?

내가 사용하는 형태로는 팝업화를 진행 상태를 표시고 내가 원하지 않는 사용자가 될 수 있을 닫습니다.

도움이 되었습니까?

해결책

이는 작업:

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    e.Cancel = true;
}

편집:에 대응하여 pix0rs 관심 예 당신은 올바른 것이 될 수 있을 프로그래밍 응용 프로그램을 닫습니다.그러나,당신은 단순히 제거하는 이벤트에 대한 처리기 form_closing 이벤트 닫기 전에 양식을:

this.FormClosing -= new System.Windows.Forms.FormClosingEventHandler(this.Form1_FormClosing);
this.Close();

다른 팁

당신 FormClosingEventArgs e.CloseReason,그것은 말할 것입니다 왜 양식을 닫고 있습니다.결정할 수 있습니다 다음은 무엇을 위해,가능한 값은 다음과 같습니다.

회원 이름 설명


없음 -의 원인이 폐쇄를 정의하지 않거나 결정할 수 없습니다.

WindowsShutDown -운영 체제 폐쇄되기 전에 모든 응용 프로그램을 종료합니다.

MdiFormClosing -부모의 형태로 이 여러 문서의 인터페이스(MDI)형태입니다.

UserClosing -사용자가 닫 양식을 통해 사용자 인터페이스(UI)가,예를 들어 닫기 단추를 클릭하여서 양식 창이 선택에서 가까운 창의 제어 메뉴는 눌러 ALT+F4.

TaskManagerClosing -마이크로 소프트 윈도우 작업 관리자는 응용 프로그램을 닫.

FormOwnerClosing -소유자는 양식이다.

ApplicationExitCall -출구 방법의 응용 프로그램 클래스가 호출됩니다.

저는 이것을 믿는 방법은 바로 그것을 하:

protected override void OnFormClosing(FormClosingEventArgs e)
{
  switch (e.CloseReason)
  {
    case CloseReason.UserClosing:
      e.Cancel = true;
      break;
  }

  base.OnFormClosing(e);
}

참고 하는것은 나쁜 형태로 간주 응용 프로그램을 완전히 방지하는 자체에서 마감.확인해야 합니다 이벤트에 대해 인수 닫는 이벤트는 방법을 확인하고 왜 응용 프로그램이 요청을 닫습니다.는 경우 그것은이 때문에 윈도우 종료할을 방지하지 않아야 가까이에서 일어나고 있다.

할 수 있 처리 FormClosing 이벤트 설정 FormClosingEventArgs.Cancel 하기 true.

내가 사용하는 형태로는 팝업화를 진행 상태를 표시고 내가 원하지 않는 사용자가 될 수 있을 닫습니다.

는 경우에는 사용자가 결정된 응용 프로그램을 종료(과 지식)충분한 alt+f4 를 누르,그들은 대부분한 지식을 실행하기에 충분한 작업 관리자를 죽이는 대신 응용 프로그램.

최소 alt+f4 앱을 할 수 있는 종료보다는 만드는 사람들이 죽습니다.에서의 경험,사람들을 죽이는 귀하의 프로그램을 사용 손상 config 파일,깨진 데이터베이스,절반 완료하는 작업을 재개할 수 없습니다,그리고 다른 많은 고통스러운 일이다.

최소력하라는 메시지가 표시와'당신은 반드시'보다는 오히려 평면을 방지한다.

이는 해킹 사용 Alt + F4.

private void test_FormClosing(object sender, FormClosingEventArgs e)
{
    if (this.ModifierKeys == Keys.Alt || this.ModifierKeys == Keys.F4) 
    { 
        e.Cancel = true; 
    }    
}

이는 작업:

bool myButtonWasClicked = false;
private void Exit_Click(object sender, EventArgs e)
{
  myButtonWasClicked = true;
  Application.Exit();
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
  if (myButtonWasClicked)
  {
    e.Cancel = false;
  }
  else
  {
    e.Cancel = true;
  }


}

것에서 formclosing 호출될 경우에도를 사용하여 프로그래밍 방식으로 이 창을 닫으면?그렇다면,당신은 아마도 어색하고 코드를 허용할 양식을 폐쇄 할 때 당신은 그것으로 마친(대신은 항상을 취소하는 작업이)

Subscribe 에서 formclosing 이벤트

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    e.Cancel = e.CloseReason == CloseReason.UserClosing;
}

단 하나의 라인 방법에 몸입니다.

숨기기 닫기 버튼을에서 양식을 사용하여 다음에서 생성자의 형태로 되어 있습니다.

this.ControlBox = false;
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top