问题
在做机房的时候,会在主窗体有很多个子窗体,有三大问题:
1、如何让子窗体总在父窗体内呢?
2、如何保证子窗体一直在父窗体之上?
3、还有同一个窗体,点击显示这个窗体的按钮会出现多个同样的窗体,怎样才能只出现一个呢?(这就需要单例模式了)
解决
1、子窗体
using System.Runtime.InteropServices;
[DllImport("user32")]
public static extern int SetParent(int Child, int Parent); //子窗体只在父窗体中,不能移出
//使用单例模式
private static frmModifyPassword fmpwd;
public static frmModifyPassword GetInstance()
{
if (fmpwd == null || fmpwd.IsDisposed)
{
fmpwd = new frmModifyPassword();
}
SetParent((int)fmpwd.Handle, (int)ActiveForm.Handle);
return fmpwd;
}
2、父窗体
frmModifyPassword frmmodifypassword = frmModifyPassword.GetInstance(); //调用frmModifyPassword的GetInstance()方法,即使用单例模式
if (frmmodifypassword.Visible == false)
{
frmmodifypassword.Show(this); //可以保证子窗体一直显示在父窗体之上
}
总结
感觉每个子窗体都写这样的代码,总是重复