如何只打开一次表单
本文关键字:一次 表单 | 更新日期: 2023-09-27 18:03:22
我有一个显示表单调用系统参数的应用程序,我希望表单只弹出一次,这样用户就不能打开相同的窗口百万次。I tried
private void SystemParametersClick(object sender, EventArgs e)
{
Xpan sp = new Xpan();
sp.CurrentItem = this.GetCaller(sender);
if (sp.Visible==false)
{
sp.Show();
}
}
它不起作用,因为它不是同一个实例。(
我怎样才能让它只爆一次?
为什么要在方法中实例化表单?只需在父类中实例化它,并且只在click事件中调用Show()
方法。
public class MainForm : Form
{
private Xpan _Xpan;
public MainForm()
{
InitializeComponent();
_Xpan = new Xpan();
}
private void SystemParametersClick(object sender, EventArgs e)
{
_Xpan.Show();
}
}
也许这个简单的方法就足够了?
private bool has_been_shown = false;
private void SystemParametersClick(object sender, EventArgs e)
{
if(!has_been_shown)
{
has_been_shown = true;
Xpan sp = new Xpan();
}
}
首先禁用Xpan表单的关闭。你可以通过定义OnFormClosing事件处理程序来实现。
private void Xpan_FormClosing(object sender, FormClosingEventArgs e)
{
e.Cancel = true;
Hide();
}
然后将Xpan表单定义为父表单的类成员,例如:
private readonly Xpan _sp = new Xpan();
最后用下面的方式来定义你的Click处理程序:
private void SystemParametersClick(object sender, EventArgs e)
{
if (!_sp.Visible)
{
_sp.Show();
}
else
{
_sp.Activate();
}
}
。