AC# 양식으로 종료 버튼에 코드를 추가하려면 어떻게합니까?

StackOverflow https://stackoverflow.com/questions/904345

  •  05-09-2019
  •  | 
  •  

문제

Microsoft Visual C# 2008 Express를 사용하고 있습니다.

내 주요 양식에는 오른쪽 상단의 양식을 닫는 X 버튼이 있습니다. 이 버튼에 코드를 추가하려면 어떻게합니까? 내 메뉴에는 "종료"항목이 있으며 데이터베이스를 정리하고 닫는 코드가 있습니다. 사용자가 종료하는 방법으로이를 선택하면이 버튼에 동일한 코드를 추가합니까?

감사!

-에이나

도움이 되었습니까?

해결책

Formclosing 이벤트를 사용하면 양식을 닫는 방법을 포착해야합니다.

다른 팁

양식의 설계보기에서 속성 창 내에서 이벤트 버튼을 선택하고 "Formclosed"및 "Formclosing"이벤트로 스크롤하십시오.

양식이 닫힌 후에 Formclosed가 호출됩니다.

Formclosing은 양식이 닫히기 전에 호출되며 양식을 열어두고 닫기를 취소 할 수 있습니다.

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

사용자에게 "이 양식을 닫고 싶습니까?"라고 물고 싶다면 사용하십시오. FormClosing, 당신이 설정할 수있는 곳 Cancel = True 그리고 양식은 계속 열려있을 것입니다.

양식이 확실히 닫힐 때만 리소스를 닫으려면 FormClosed 이벤트.

전체 코드를 제어하고 있다면 그것은 중요하지 않습니다. 그러나 당신이 일어나고 싶지 않은 것은 사용을 사용하는 자원을 정리하는 것입니다. FormClosing 이벤트의 다른 핸들러가 양식을 열어두면.

formclosing/formclosed를 사용하면 종료 응용 프로그램과 일치 할 수있는 그 양식의 이벤트를 볼 수 있습니다. 그러나 Application.ApplicationExit이라는 다른 이벤트가 있습니다.

주요 방법에서 :

Application.ApplicationExit += Application_ApplicationExit;

...

private static void Application_ApplicationExit(object sender, EventArgs e) {

  // do stuff when the application is truly exiting, regardless of the reason

}

WinForm의 폐쇄 이벤트를 사용하십시오.

이 코드는 사용자가 'X'를 클릭하거나 Alt-F4를 사용하여 무언가를 할 수 있도록 캡처합니다. 폐회 이벤트에 전화하기 위해 조치가 필요했기 때문에 이것을 사용해야했고, 레이싱 이벤트로 인해 Formcling 이벤트를 사용할 때는 호출하지 않을 것입니다.

/// <summary>
/// This code captures the 'Alt-F4' and the click to the 'X' on the ControlBox
/// and forces it to call MyClose() instead of Application.Exit() as it would have.
/// This fixes issues where the threads will stay alive after the application exits.
/// </summary>
public const int SC_CLOSE = 0xF060;
public const int WM_SYSCOMMAND = 0x0112;
protected override void WndProc(ref System.Windows.Forms.Message m)
{
    if (m.Msg == WM_SYSCOMMAND && (int)m.WParam == SC_CLOSE)
        MyClose();

    base.WndProc(ref m);
}

Form'Design에서 종료 버튼을 두 번 클릭 한 다음 Dispose () 메소드를 호출합니다.

양식 액션 방법 //

 protected override void OnFormClosing(FormClosingEventArgs e)

          {
          base.OnFormClosing(e);

          if (e.CloseReason == CloseReason.WindowsShutDown) return;

               switch (MessageBox.Show(this, "Are you sure you want to exit?", "Exit", MessageBoxButtons.YesNo))
                     {
                       case DialogResult.No:
                           e.Cancel = true;
                           break;
                     default:
                          break;
                     }
         }
 You can use form closing events choose or set closing event in  properties window      
 You can add dialog conditions based on what task you want to perform before closing form

private void Form1_FormClosing(object sender,FormClosingEventArgs e)
{
Application.Exit();
//you can also use Application.ExitThread();
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top