#region
|
|
using System.Windows.Forms;
|
using CSFrameworkV5.Core;
|
|
#endregion
|
|
namespace CSFrameworkV5.Business
|
{
|
/// <summary>
|
/// 观察用户是否关闭所有子窗体, 如果用户关闭了所有子窗体,显示MDI主窗体的按钮.
|
/// </summary>
|
public class ObserverCloseAllChild : IObserver
|
{
|
private Form _mdi;
|
|
public ObserverCloseAllChild(Form mdi)
|
{
|
_mdi = mdi;
|
}
|
|
public string Name => "观察子窗体完全关闭";
|
|
//如果用户关闭所有子窗体,显示MDI主窗体上的按钮
|
public void Notify()
|
{
|
if (_mdi.MdiChildren.Length == 0)
|
(_mdi as IMdiForm).RegisterMdiButtons();
|
else if (_mdi.MdiChildren.Length == 1)
|
if (_mdi.MdiChildren[0] is IMdiChildForm)
|
if ((_mdi.MdiChildren[0] as IMdiChildForm).IsClosing)
|
(_mdi as IMdiForm).RegisterMdiButtons();
|
}
|
}
|
|
/// <summary>
|
/// 观察当前子窗体,在MDI主窗体内显示子窗体的标题
|
/// </summary>
|
public class ObserverFormState : IObserver
|
{
|
private ToolStripStatusLabel _label;
|
private Form _mdi;
|
|
public ObserverFormState(Form mdi, ToolStripStatusLabel label)
|
{
|
_mdi = mdi;
|
_label = label;
|
}
|
|
public string Name => "观察当前子窗体";
|
|
public void Notify()
|
{
|
var child = _mdi.ActiveMdiChild;
|
|
if (child != null)
|
{
|
if (child is IMdiChildForm)
|
{
|
if ((child as IMdiChildForm).IsClosing)
|
_label.Text = _mdi.Text;
|
else
|
_label.Text = child.Text;
|
}
|
else
|
{
|
_label.Text = child.Text;
|
}
|
}
|
else
|
{
|
_label.Text = "没有打开子窗体.";
|
}
|
}
|
}
|
|
/// <summary>
|
/// 观察打个的窗体个数.
|
/// </summary>
|
public class ObserverOpenForms : IObserver
|
{
|
private ToolStripStatusLabel _label;
|
private Form _mdi;
|
|
public ObserverOpenForms(Form mdi, ToolStripStatusLabel label)
|
{
|
_mdi = mdi;
|
_label = label;
|
}
|
|
public string Name => "观察打个的窗体个数";
|
|
public void Notify()
|
{
|
//计算打开的子窗体个数,因Application.OpenForms.Count是所有打开的窗体数量,要减掉MDI主窗体.
|
var count = Application.OpenForms.Count - 1;
|
if (count < 0) count = 1;
|
|
_label.Text = string.Format("共打开{0}个窗体", count);
|
}
|
}
|
}
|