2014-12-04 3 views
0

두 개의 Windows Forms : FormMain 및 FormRecordTranslation이 있습니다. FormMain에 메뉴 항목이 있습니다. 항목을 클릭하면 FormRecordTranslation 양식이 표시되고 FormMain은 비활성화되어야합니다. 즉, 두 번째 양식에서 작업하는 한 클릭 취소가 불가능합니다. 두 번째 양식을 닫으면 첫 번째 양식을 사용할 수 있어야합니다. 이 목적을 위해 FormMain 클래스 내에 다음 코드를 사용했습니다.두 번째 폼이 활성 상태 일 때 폼을 비활성화하는 방법

public partial class FormMain : Form 
{ 
    public FormMain() 
    { 
     InitializeComponent(); 
    } 

    private void recordTranslationToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     FormRecordTranslation frmRecordTranslation = new FormRecordTranslation(); 
     frmRecordTranslation.Activate(); 
     frmRecordTranslation.Show(); 
     frmRecordTranslation.TopMost = true; 
    } 
} 

상단에 두 번째 양식이 있지만. 여전히 첫 번째 양식을 클릭하고 작업 할 수 있습니다.

답변

3

frmRecordTranslation.Show() 대신 frmRecordTranslation.ShowDialog()를 사용하십시오. 두 번째 형식이 모달 대화 상자로 표시됩니다.

0

이 목적으로 ShowDialog(Form) (MSDN)도 있습니다.

또한 Show() 메소드는 overload (MSDN)을 가지며 다른 폼을 부모로 사용합니다.

그런 다음, 더 이상

frmRecordTranslation.Activate(); 
frmRecordTranslation.TopMost = true; 

필요가 없습니다. 그러나 부모 양식은이 경우에도 계속 활성화됩니다 (TopMost의 필요성을 없애줍니다). 대신과 같이, Form.Show()를 호출

0

:

frmRecordTranslation.Show(); 

를 호출 ShowDialog() 방법. ShowDialog은 표시 할 양식이 모달 대화 상자임을 지정합니다. (MessageBox.Show을 사용하여 표시 될 때) 메시지 상자와 마찬가지로 대화 상자가 표시되는 동안 양식을 상호 작용할 수 없습니다.

관련 문제