gpt4 book ai didi

c# - 为什么这个 Visual Studio 计时器组件在设计时工作?

转载 作者:行者123 更新时间:2023-11-30 19:59:24 25 4
gpt4 key购买 nike

在 .Net windows 窗体应用程序中,有一个启用的窗体中的计时器。下面的代码是句柄:

    private void timer2_Tick(object sender, EventArgs e)
{
try
{
if ( !CheckLock())
{
MessageBox.Show("No lock found.");
this.Close();
}
}
catch (Exception ex)
{
MessageBox.Show("No lock found.");
this.Close();
}
}

锁是一个usb硬件锁。令人惊讶的是,如果我取出锁,代码会在设计时(在 VS 2010 IDE 中)显示此弹出消息。

有谁知道是什么原因吗?

最佳答案

这很正常,您的代码也可以在设计时运行。此方法的上下文不清楚,但很有可能在您继承存在此方法的 Form 类时让计时器开始计时。或者,当您将此代码放在 UserControl 中并将其放在窗体上时。

这是设计师提供所见即所得外观的主要方式。就像设置控件的 BackgroundImage 属性一样,设计器中的图像也会立即显示给您。换句话说,BackgroundImage 属性 setter 和控件的 OnPaintBackground() 方法都在设计时执行。基本规则是基类 中的任何代码都可以在设计时运行。您添加到派生类的代码不会。

修复它很容易,使用 DesignTime 属性来防止计时器在设计时处于事件状态。像这样:

    timer2.Enabled = !this.DesignTime;    // Instead of true

关于c# - 为什么这个 Visual Studio 计时器组件在设计时工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24157956/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com