今天写一个客户端程序的时候,想实现连接服务器时,主窗口隐藏,子窗口弹出。想要主窗口出现时,再点击子窗口的按钮即可返回。
本来以为这样就就可以实现↓
ClientForm clientform=new ClientForm();//实例化
clientform.Visible=true;//隐藏为false
发现我太天真了。这样只会开多一个新的窗口出来,根本不是我们本来的窗口。
于是我上网搜索,发现找不到自己想要的。看了另外一个博主写了个定时器的办法,可行,但是感觉还可以更简单一点。
于是开始自己动手写。
首先,在子窗口定义一个静态窗口变量,用于存储等等传过来的主窗口变量。
static Form ClientFormSet;//定义一个静态窗口变量去存储主窗口,方便调用
其次,再主窗口打开子窗口时,传入主窗口。
MiniClientForm miniform = new MiniClientForm(this);//实例化子窗口,传入本窗口。
MiniformSet.Show();//创建小窗口
在子窗口的代码也要加上形参
public MiniClientForm(ClientForm clientForm)//窗口函数,此时传入了大窗口
{
InitializeComponent();
ClientFormSet = clientForm;//用刚刚定义的静态变量存储大窗口
}
这样就大功告成了,你已经可以随便显示/隐藏自己的主窗口了。
if (IsBigFormOpen == false)//这里是我自己定的bool值。如果窗口未打开,则打开
{
ClientFormSet.Visible = true;
IsBigFormOpen = true;//已打开
ReturnSettingBtn.Text = "隐藏设置";
}
else
{
ClientFormSet.Visible = false;
ReturnSettingBtn.Text = "返回设置";
IsBigFormOpen = false;//已关闭
}
非常简单!