我有一个应用程序,显示表单调用系统参数,我希望表单只弹出一次,以便用户无法打开相同的窗口百万次。我试过了
private void SystemParametersClick(object sender, EventArgs e)
{
Xpan sp = new Xpan();
sp.CurrentItem = this.GetCaller(sender);
if (sp.Visible==false)
{
sp.Show();
}
}
它不起作用,因为它不是同一个实例。 :(
我怎么才让它只流行一次?
答案 0 :(得分:0)
也许这种简单的方法就足够了?
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();
}
}
答案 1 :(得分:0)
首先禁用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();
}
}
就是这样。
答案 2 :(得分:0)
为什么要在方法中实例化表单?只需在父类中实例化它,只在click事件中调用Show()
方法。
public class MainForm : Form
{
private Xpan _Xpan;
public MainForm()
{
InitializeComponent();
_Xpan = new Xpan();
}
private void SystemParametersClick(object sender, EventArgs e)
{
_Xpan.Show();
}
}