我有两个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;
}
}
虽然这将第二种形式放在首位。它仍然允许点击和处理第一个表单。
答案 0 :(得分:3)
使用frmRecordTranslation.ShowDialog()代替frmRecordTranslation.Show()。这将显示您的第二个格式作为模态对话框。
答案 1 :(得分:0)
此目的还有ShowDialog(Form) (MSDN)。
此外,Show()
方法有一个overload (MSDN),它将另一种形式作为父级。
然后,应该不需要
frmRecordTranslation.Activate();
frmRecordTranslation.TopMost = true;
了。但在这种情况下仍然会启用父表单(只需消除TopMost
)的需要。
答案 2 :(得分:0)
而不是像Form.Show()
那样打电话:
frmRecordTranslation.Show();
调用ShowDialog()
方法。 ShowDialog
指定要显示的表单是模式对话框 - 即。显示对话框时无法与表单进行交互,就像消息框一样(使用MessageBox.Show
显示时)。