2014-12-04 66 views
0

我有两个Windows窗体: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.ShowDialog()而不是frmRecordTranslation.Show()。这将显示你的第二个形式作为模态对话框。

0

为此也有ShowDialog(Form) (MSDN)

此外,Show()方法有一个overload (MSDN)它采取另一种形式作为父。

然后,应该没有必要

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

了。但是在这种情况下父表单仍然可以使用(只需要删除TopMost)。

0

与其说Form.Show(),像这样的:

frmRecordTranslation.Show(); 

调用ShowDialog()方法。 ShowDialog指定要显示的表单是模态对话框 - 即。该窗体在显示对话框时无法与对话框交互,很像消息框(使用MessageBox.Show进行显示时)。

相关问题