- 更新详细信息--
当我在timer1_Tick设置了点中断后,我发现了下面的一些情况:
1.当我没有运行frmSettings时,frmSettings中的计时器1已经运行。
1.当frmSetting运行时,我设置了断点来检查init数据和timer1.enable为true后的状态,但打开表单后没有运行timer1_Tick。
1.运行frmSetting后,timer1_Tick有时能运行,有时不能运行
1.如果有另一个子窗体运行,frmSetting中的timer1_Tick有时可以运行,有时不能运行。
我不确定是不是因为多线程。
chid窗体的按钮点击代码
public void tsmSetting_Click(object sender, EventArgs e)
{
DataView dvView = Handler.GetView("Type = 'S');
_frmSetting = new frmSetting();
_frmSetting.PassSettingMsg += _frmSendMsg_PassSettingMsg;
_frmSetting.InitSettingData(dvView, dicStatus);
_frmSetting.Show();
_frmSetting.Activate();
}
我花了几个小时试图解决这个问题,但还是没能解决。我的主窗体有一个按钮,单击该按钮将打开一个子窗体(frmSetting.cs)。我在子窗体中设置了一个计时器,但是当子窗体打开时,它不起作用。当子窗体关闭时或在我单击按钮打开子窗体之前,它就工作了!我不知道为什么,也解决不了。请帮帮我...这是我的代码:
frmSetting.designer.cs
//
//timer1
//
this.timer1.Enabled = true;
this.timer1.Interval = 3000;
this.timer1.Tick += new System.EventHandler(this.timerProtect_Tick);
frmWSetting.cs
public frmSetting()
{
InitializeComponent();
DoubleBuffered(dgvProtectAll, true);
}
public new void DoubleBuffered(DataGridView dgv, bool setting)
{
Type dgvType = dgv.GetType();
PropertyInfo pi = dgvType.GetProperty("DoubleBuffered",
BindingFlags.Instance | BindingFlags.NonPublic);
pi.SetValue(dgv, setting, null);
}
private void timer1_Tick(object sender, EventArgs e)
{
update_Cal();
update_Value();
}
1条答案
按热度按时间vvppvyoh1#
如果我没理解错的话,我想是因为你没有启动计时器。你是否运行了timerProtect.Start();在frmWSettingProtectAll_Load函数中?