要实现 Form1中用一个定时器每五分钟调用一次Form2对象传一个string参数,Form2中有一个lable,让它的Text为传过来的string的内容,并用Show方法显示。但是每次Show出来的效果希望是如果前面的Form2窗口如果没有被用户关闭则刷新lable.Text的内容,如果已经被用户关闭则重新弹出新的Form2窗口显示string内容。该怎么实现呢?大家帮帮忙。
解决方案 »
- 怎么解决出库日期小于入库日期的问题?
- 弹出对话框显示数据,不弹出不显示
- 请教winform发布后图片报错问题。
- c#编程练习题12改良版,正在看回帖的朋友推荐的大话设计模式
- 子类继承父类后一定要实现父类的虚成员吗?
- 请教各位:(在平板电脑上运行的程序)我在Panel中添加了一个Panel列表,各个Panel之间有空隙,我将低层的Panel增加滚轮控制,在空隙处我可以用手拖动
- 如何根据记录多少,确定dataGrid的高度?
- C# 不用窗体间的通信问题
- 一夜未宿:如何在datagrid(winform)中动态增加具有可自定义类型的列??
- C#中,在pictureBox中显示GIF图片,没有动画效果
- enter 键怎么使用 (c#问题)
- 我如何知道SQL Server Express被安装上了?
{
form2.label.Text = "";
form2.Refresh();
}
else
{
form2 = new form2();
form2.label.Text = "";
form2.Refresh();
}
定时器每五分钟向Form2传一个string参数
Form2中用事件响应.
在Form1中 设置一静态变量 public static string m_username = "";
也在Form1 中对其赋值 ...在Form2中 设置给timer 每5分钟 去获取一下 Form1.m_username ;楼主看看这样是不是好理解一些..
{
private Timer mtimer;
Form2 mform2;
public Form1()
{
InitializeComponent(); mtimer = new Timer();
mtimer.Interval = 5* 1000;
mtimer.Tick += new EventHandler(mtimer_Tick);
mtimer.Enabled = false;
} void mtimer_Tick(object sender, EventArgs e)
{
if (mform2 == null)
mform2 = new Form2(); Random rd = new Random();
mform2.ShowMessage(String.Format("Form1 Send:{0}",rd.Next().ToString()));
} private void button1_Click(object sender, EventArgs e)
{
if (mtimer.Enabled)
return; if (mform2 == null)
mform2 = new Form2();
mform2.Show();
mform2.ShowMessage("Start");
mtimer.Enabled = true;
} private void button2_Click(object sender, EventArgs e)
{
if (!mtimer.Enabled)
return; mtimer.Enabled = false;
mform2.Dispose();
mform2 = null;
}
}
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
} public void ShowMessage(string _strmsg)
{
label1.Text = _strmsg;
this.Show();
this.BringToFront();
this.Update();
} private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
this.Hide();
e.Cancel = true;
}
}
//timer1的Enabled为true,Interval值我就不说了
private void timer1_Tick(object sender, EventArgs e)
{
if (f == null)
{
f = new Form2();
f.Show();
}
f.lable1.Text = DateTime.Now.ToLongTimeString();
//lable1设为public的,后边的值相当于传过去的值
}
{
timer1.Start();
} Form2 f2 = null; private void timer1_Tick(object sender, EventArgs e)
{
timer1.Interval = 300000;
string fStr = textBox1.Text;
if (f2 == null || f2.IsDisposed)
{
f2 = new Form2();
f2.label1.Text = fStr;
f2.Show();
}
else
{
f2.Activate();
f2.label1.Text = fStr;
}
} Form2中把label1声明为public的 public System.Windows.Forms.Label label1;