C# WINFORM 如何在新窗体中关闭(停止)原窗体的时钟

在FORM1中打开FORM2,方式为:
Form2 fr2 = new Form2();
fr2.ShowDialog();

然后Form1中有一个public方法
public void CloseTime()
{
timer1.Enabled = false;
}

然后我在Form2中的Load事件中调用Form1的CloseTime()
Form1中的timer1时钟还在运行。
我调试过发现有执行关闭的方法。
我该如何正确的关掉Form1上的timer1时钟?
谢谢。
timer1.Stop();
也没用,忘记说了。也试过了。

应该是思路错了,不能这么做。
但是不知道要怎么做。

你不会是在Form2中这样调用Form1中的方法的吧
Form1 fr1 = new Form1();
fr1.CloseTime();

方法一
1、这样打开Form2
Form2 fr2 = new Form2();
fr2.ShowDialog(this);
2、这样执行Form1中的方法
((Form1)this.Owner).CloseTime();

方法二
把Form2的构造函数加个参数,类型是Form1
创建Form2时把this传递进来
在Form2中接收一下参数存成成员变量例如Form1 _form1
用这个成员变量执行CloseTime()方法。_form1.CloseTime();
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-04-06
像这种问题,一般可以换一种方式做,比如在窗体2的构造器中传一个时间控件的参数,然后在这个构造器中关闭这个时间控件。当然,把窗体2Show出来的时候 new Form2(timer);以这种形式,show出来。然后在Form2的构造器中利用这个timer参数关闭这个时间控件。不知道我说清楚了没有。你可以和我私聊
第2个回答  2012-04-06
首先你要确定你调用的form1.CloseTime(); 这个form1是你打开form2的那个窗体
不然的话如果是你在form2中 Form1 fr1 = new Form1(); 然后fr1.CloseTime();这样肯定是没办法停掉的
第3个回答  2012-04-06
你怎么调的CloseTime()?我不把Form1的句柄传过去调不到方法,传过去的话是可以成功的
第4个回答  2012-04-06
思路不正确 容我再想想
相似回答