C# 4.0 当窗口A打开时,限制打开窗口B
我是c#的初学者,C# 4.0 当窗口A打开时,限制打开窗口B,c#-4.0,c#-3.0,C# 4.0,C# 3.0,我是c#的初学者, 我正在使用窗口应用程序,我希望当windowOne打开时,用户不能打开Window2,我使用上述代码避免再次打开windowOne或Window2。打开前检查两个窗口,如果其中一个窗口打开,则聚焦正确的窗口。像这样: public partial class MainMenu : Form { public MainMenu() { InitializeComponent(); } windowOne One; wind
我正在使用窗口应用程序,我希望当windowOne打开时,用户不能打开Window2,我使用上述代码避免再次打开windowOne或Window2。打开前检查两个窗口,如果其中一个窗口打开,则聚焦正确的窗口。像这样:
public partial class MainMenu : Form
{
public MainMenu()
{
InitializeComponent();
}
windowOne One;
windowTwo Two;
private void OneToolStripMenuItem_Click(object sender, EventArgs e)
{
if (One != null)
{
One.WindowState = FormWindowState.Normal;
One.Focus();
}
else
{
One = new windowOne();
One.MdiParent = this;
One.FormClosed += (o, ea) => One = null;
One.Show();
}
}
private void TwoToolStripMenuItem_Click(object sender, EventArgs e)
{
if (Two != null)
{
TwoWindowState = Two.Normal;
Two.Focus();
}
else
{
Two = new windowTwo();
Two.MdiParent = this;
Two.FormClosed += (o, ea) => Two = null;
Two.Show();
}
}
编辑:由于这些代码块完全相同,因此最好将它们分解到各自的方法中
if (One != null)
{
One.WindowState = FormWindowState.Normal;
One.Focus();
}
else if (Two != null)
{
Two.WindowState = FormWindowState.Normal;
Two.Focus();
}
else
{
// Show the window
}
然后您可以这样使用它:
public bool IsWindowOpen()
{
if (One != null)
{
One.WindowState = FormWindowState.Normal;
One.Focus();
}
else if (Two != null)
{
Two.WindowState = FormWindowState.Normal;
Two.Focus();
}
else
{
return false;
}
return true;
}
您可以根据当时打开的窗口禁用菜单项1/2,然后在关闭窗口后再次启用
if (!IsWindowOpen())
{
// Open window
Two = new windowTwo();
Two.MdiParent = this;
Two.FormClosed += (o, ea) => Two = null;
Two.Show();
}
不,但这只满足了一个要求,但我希望当第一扇窗户打开时,窗户不能打开,我不知道。很好的选择,我从来没有想过。。thanx没问题,别忘了接受答案,尽可能地点击勾号。thanx兄弟。。很有帮助。。但这又产生了另一个问题,即。。当你打开条带中的每个菜单项时,它会禁用窗口中的所有菜单项。我不确定你的意思。我的意思是,当你打开一个表单时,先关闭那个表单,再打开两个表单,然后再关闭那个表单,之后你就无法打开一个或两个表单中的任何一个。。!!是的,还有一个更好的方法。。但是你认为什么不会使它变得复杂呢?这是根据选择的窗口禁用菜单项的最简单的方法。只是不要忘记在关闭窗口时重新启用菜单项
menuItem1.Enabled = false;