从父标签获取计时器倒计时

时间:2016-05-27 22:41:25

标签: c# forms countdown

我有一个倒计时,它输出到主窗体上的标签,我想将主窗体的倒计时弹出到子窗体,因为子窗体将能够保持在所有其他窗口之上(对于游戏我无法更新儿童唱片的倒计时。当我点击弹出按钮时,我只得到第二个。

这是主要表格

    private void tmrMain_Tick(object sender, EventArgs e)
    {
        TimerSeconds = TimerSeconds - 1;
        if (TimerSeconds == 0)
        {
            tmrMain.Stop();
            if (chbxPlaySound.Checked)
            {
                System.Media.SystemSounds.Exclamation.Play();
            }
            if (chbxRepeat.Checked)
            {
                btnStartTimer.PerformClick();
            }
        }

        string dis_seconds = Convert.ToString(TimerSeconds);
        //
        // lblTimer is the label that shows the countdown seconds
        //
        lblTimer.Text = dis_seconds;

    }

这是主表单上的弹出按钮

    private void btnPopOut_Click(object sender, EventArgs e)
    {
        PopTimer ShowTimer = new PopTimer(TimerSeconds);
        ShowTimer.Show(this);
    }

这是我的孩子表格

public partial class PopTimer : Form
{
    public PopTimer(int countTimer)
    {
        InitializeComponent();
        //string dis_seconds = Convert.ToString(TimerSeconds);
        lblPopTimer.Text = Convert.ToString(countTimer); ;
    }
}

1 个答案:

答案 0 :(得分:1)

您的PopTimer表单需要一个可访问的方法,如下所示:

public void SetCountdown(int value) {
  lblPopTimer.Text = value.ToString();
}

然后您的PopTimer需要可访问,因此请移动声明:

private PopTimer showTimer = null;

private void btnPopOut_Click(object sender, EventArgs e)
{
  showTimer = new PopTimer(timerSeconds);
  showTimer.Show(this);
}

然后在你的tick事件中:

if (showTimer != null) {
  showTimer.SetCountdown(timerSeconds);
}