日期:2014-05-19  浏览次数:20786 次

窗口问题,大家解惑啊!
要实现   Form1中用一个定时器每五分钟调用一次Form2对象传一个string参数,Form2中有一个lable,让它的Text为传过来的string的内容,并用Show方法显示。但是每次Show出来的效果希望是如果前面的Form2窗口如果没有被用户关闭则刷新lable.Text的内容,如果已经被用户关闭则重新弹出新的Form2窗口显示string内容。该怎么实现呢?大家帮帮忙。

------解决方案--------------------
if(form2 != null)
{
form2.label.Text = " ";
form2.Refresh();
}
else
{
form2 = new form2();
form2.label.Text = " ";
form2.Refresh();
}
------解决方案--------------------
public partial class Form1 : Form
{
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;
}
}
------解决方案--------------------
Form f;
//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的,后边的值相当于传过去的值
}
------解决方案--------------------
简单点写,可以这样试下

Form1中

private void Form1_Load(object sender, EventArgs e)
{
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
{