C#一个窗体控制另一个窗体的timer(是在一个解决方案下的两个项目的分别的Form1和Form2),不同命名空间 20

就如我在一个解决方案里建了两个项目,每个项目里有个Form,现在我要在窗体Form1当Textbox1的值到10时,Form2的Timer自动启动,开始增加,备注:是一个... 就如 我在一个解决方案里建了两个项目,每个项目里有个Form,现在我要在窗体Form1当Textbox1的值到10时,Form2的Timer自动启动,开始增加,

备注:是一个解决方案下的两个项目,即两个Application下的Form,不同命名空间
望写详细点,附代码更好
展开
 我来答
spin2008
2012-01-16 · 超过32用户采纳过TA的回答
知道答主
回答量:78
采纳率:0%
帮助的人:70.3万
展开全部
在解决方案下就好办了,你在Form1所在项目添加引用Form2所在的项目,使Form2依赖于Form1,给你写个Demo吧,如Form1所在项目为WindowsFormsApplication1,其中有Form1,Form1上有个Textbox1,Form2所在项目为WindowsFormsApplication2,其中有Form1,Form1上有个label,timer,label显示时间timer1.Interval=1000;timer1.Enabled=false;
WindowsFormsApplication2.Form1:
namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public bool TimerEnabled
{
set { timer1.Enabled = value; }
}
int i=1;
private void timer1_Tick(object sender, EventArgs e)
{
i++;
label1.Text = i.ToString();
}
}
}
WindowsFormsApplication1--引用--右键--添加引用--项目,选择WindowsFormsApplication2--确定
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
if (int.Parse(textBox1.Text) == 10)
{
WindowsFormsApplication1.Form1 frm = new WindowsFormsApplication1.Form1();
frm.TimerEnabled = true; //启动Timer并打开窗体
frm.ShowDialog();
}
}
}
}
将WindowsFormsApplication1设为启动项目并运行
追问
WindowsFormsApplication2.Form1 frm = new WindowsFormsApplication2.Form1();
吧,没有错误 可是还是没有执行起来
追答
是的,WindowsFormsApplication2.Form1 frm = new WindowsFormsApplication2.Form1();复制有点问题,WindowsFormsApplication1设为启动项目,并在WindowsFormsApplication1.Form1 的textBox1中输入10才能执行起来
sxhgga
2012-01-17 · TA获得超过687个赞
知道小有建树答主
回答量:1019
采纳率:74%
帮助的人:633万
展开全部
你在打开一个窗体时候加上
窗体.Owner = this;

Form1中,当Textbox1值为10时
Form1 frm1 = (Form1)this.Owner;

((Timer)frm1.Controls["panel1"].Controls["timer1"]).start();
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
酒尖咸
2012-01-16 · TA获得超过131个赞
知道小有建树答主
回答量:243
采纳率:100%
帮助的人:106万
展开全部
给你一种方法 用C++的函数
看下这个http://blog.csdn.net/bdstjk/article/details/7000676。我这个例子是一个项目里面,你改下到两个项目
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
忆梦潇湘
2012-01-16 · TA获得超过584个赞
知道小有建树答主
回答量:391
采纳率:0%
帮助的人:318万
展开全部
如果是两个项目的话,就要用反射了。。。因为是应用程序域不同,在不同的进程。
追问
不懂反射
能说点详细的吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友8b9c67519
2012-01-16 · 超过21用户采纳过TA的回答
知道答主
回答量:55
采纳率:0%
帮助的人:40.6万
展开全部
很简单啊。在form1中触发一个事件,伪代码如下:
public event TextChanged;
if(textbox1.Text=="10")
{
if(TextChanged!=null)
TextChanged(this,null);
}
在form2中定义一个form1的实例变量_form1
private form1 _form1;
public form2()
{
_form1=new form1();
_form1.TextChanged+=new EventHandler(Form1TextChanged);
}

private void Form1TextChanged(object sender,EventArgs e)
{
this.timer2.Start();
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式