C# WinForms有时出现两次,有时出现一次
我对此感到困惑,称为联系人的windows窗体有时在欢迎屏幕后调用两次,有时仅调用一次它的联系人。我很确定我只调用过一次表单 以下是我正在使用的代码: WelcomeScreen下面的表单是运行程序时调用的第一个表单: 谢谢你的回答 谢谢你看来是你的计时器触发了多次,导致了这个问题 您的计时器代码中有以下条件:C# WinForms有时出现两次,有时出现一次,c#,winforms,C#,Winforms,我对此感到困惑,称为联系人的windows窗体有时在欢迎屏幕后调用两次,有时仅调用一次它的联系人。我很确定我只调用过一次表单 以下是我正在使用的代码: WelcomeScreen下面的表单是运行程序时调用的第一个表单: 谢谢你的回答 谢谢你看来是你的计时器触发了多次,导致了这个问题 您的计时器代码中有以下条件: if (timeLeft <= 0) 前面的那行是时间限制-。timeLeft变为0后,它将继续变小-1、-2等,并且每次都会显示该表单 快速修复方法是将条件更改为timeLef
if (timeLeft <= 0)
前面的那行是时间限制-。timeLeft变为0后,它将继续变小-1、-2等,并且每次都会显示该表单
快速修复方法是将条件更改为timeLeft==0或将timeLeft的类型更改为uint。当然,这些都是黑客。正确的修复方法是修复代码,在需要时停止计时器启动。在代码中使用断点,并检查调用了多少次。如果是两次,请检查调用堆栈并查看原因!您还可以检查表单是否已打开,如果它已打开,请不要调用它。使用WindowState我想WindowState只适用于最大化、最小化和正常sir@VijaySinghRana。谢谢你,我会记得经常使用断点并检查调用堆栈sir@mybirthname但是为什么你这么懒地调试它?或者至少是Debug.writeling。。
public partial class Contact : Form
{
const int CP_NOCLOSE_BUTTON = 0x200;
public Contact()
{
InitializeComponent();
}
void Contact_Load(object sender, EventArgs e)
{
SystemManager.SoundEffect();
}
void button1_Click(object sender, EventArgs e)
{
this.Hide();
Loading _loading = new Loading();
_loading.ShowDialog();
this.Close();
}
protected override CreateParams CreateParams
{
get
{
CreateParams myCp = base.CreateParams;
myCp.ClassStyle = myCp.ClassStyle | CP_NOCLOSE_BUTTON;
return myCp;
}
}
if (timeLeft <= 0)