当我们在wm项目中需要经常显示一个窗体(比如是地图显示的窗体),而且这个窗体中显示的东西又比较多时,我们可以考虑在该窗体中定位一个单例模式的静态对象:
代码如下:
#region
private static readonly MapForm _instance = new MapForm();
#endregion
#region Properties
public static MapForm Instance
{
get
{
return _instance;
}
}
#endregion
接下去当我们在别的窗体中调用并显示MapForm时,如下代码:
MapForm.Instance.TopMost=True;
然而,当我们关闭这个窗体时,如果没有通过该窗体的Closing事件使窗体处于隐藏的状态的话,下次再调用该MapForm窗体时,会出现该MapForm窗体的Menu菜单不可用,原因是刚才关闭窗体时,没有通过Closing事件个来完成如下的代码操作。
private void MapForm_Closing(object sender, CancelEventArgs e)
{
e.Cancel = true;
Visible = TopMost = false;
}
怎么样才能触发Closing事件呢,答案是把MapForm的MinimizeBox设为false,窗体在新建时MinimizeBox是为true的。默认情况下,show()窗体时,窗体的左上角是打叉的按钮,如果将MinimizeBox设为false,show()窗体时,窗体的左上角是OK的按钮。
当然,如果你显示MapForm.ShowDialog()时,窗体的左上角是OK的按钮。
浙公网安备 33010602011771号