사용자가 양식을 닫지 못하도록 ac # win 양식에서 Alt+ 를 비활성화하는 가장 좋은 방법은 무엇입니까 F4?
진행률 표시 줄을 표시하는 팝업 대화 상자로 양식을 사용하고 있으며 사용자가 닫을 수 없도록하고 싶습니다.
답변:
이것은 일을합니다 :
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();
e.Cancel = (e.Reason == CloseReason.UserClosing);
.. 이렇게하면 USER가 양식을 닫으려고 할 때만 닫히지 않습니다.
당신이 보면 값 의 FormClosingEventArgs e.CloseReason
양식을 폐쇄하는 이유, 그것은 당신을 말할 것이다. 그런 다음 수행 할 작업을 결정할 수 있으며 가능한 값은 다음과 같습니다.
회원 이름 -설명
없음 -폐쇄 원인이 정의되지 않았거나 확인할 수 없습니다.
WindowsShutDown- 운영 체제가 종료하기 전에 모든 응용 프로그램을 닫습니다.
MdiFormClosing- 이 MDI (다중 문서 인터페이스) 양식의 상위 양식이 닫힙니다 .
UserClosing- 사용자가 사용자 인터페이스 (UI)를 통해 양식을 닫고 있습니다. 예를 들어 양식 창에서 닫기 단추를 클릭하거나 창의 제어 메뉴에서 닫기를 선택하거나 ALT+를 누릅니다 F4.
TaskManagerClosing -Microsoft Windows 작업 관리자가 응용 프로그램을 닫고 있습니다.
FormOwnerClosing- 소유자 양식이 닫힙니다 .
ApplicationExitCall -Application 클래스의 Exit 메서드가 호출되었습니다.
CloseReason
및 DialogResult
최상의 결과를 위해.
나는 이것이 올바른 방법이라고 믿습니다.
protected override void OnFormClosing(FormClosingEventArgs e)
{
switch (e.CloseReason)
{
case CloseReason.UserClosing:
e.Cancel = true;
break;
}
base.OnFormClosing(e);
}
진행률 표시 줄을 표시하는 팝업 대화 상자로 양식을 사용하고 있으며 사용자가 닫을 수 없도록하고 싶습니다.
사용자가 alt + f4를 누를만큼 충분히 지식이있는 앱을 종료하기로 결정했다면 작업 관리자를 실행하고 대신 애플리케이션을 종료 할 수있을만큼 충분히 지식이있을 것입니다.
적어도 alt + f4를 사용하면 앱이 단순히 앱을 죽이는 것이 아니라 정상적으로 종료 할 수 있습니다. 경험상 사람들이 앱을 죽이는 것은 손상된 구성 파일, 손상된 데이터베이스, 재개 할 수없는 반쯤 완료된 작업 및 기타 많은 고통스러운 일을 의미합니다.
적어도 그것을 막기보다는 '확실합니까'라고 프롬프트하십시오.
이것은 Alt+ 를 비활성화하는 해킹 F4입니다.
private void test_FormClosing(object sender, FormClosingEventArgs e)
{
if (this.ModifierKeys == Keys.Alt || this.ModifierKeys == Keys.F4)
{
e.Cancel = true;
}
}
System.Windows.Forms
하는 경우 Control.ModifierKeys
속성 대신 정적 속성 을 확인해야 this.ModifierKeys
합니다 (위의 스 니펫 참조).
이것은 일을합니다 :
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이 호출됩니까? 그렇다면 작업을 항상 취소하는 대신 작업을 마쳤을 때 양식을 닫을 수 있도록 일부 코드를 추가 할 수 있습니다.
양식 생성자에서 다음을 사용하여 양식에서 닫기 단추를 숨 깁니다.
this.ControlBox = false;