【问题标题】:How to trigger an event after a timer runs down if the user does not click a control如果用户不单击控件,如何在计时器耗尽后触发事件
【发布时间】:2017-05-22 22:23:29
【问题描述】:

我是 stackoverflow 的新手,所以请原谅任何协议违规行为。 我正在尝试使用 c# 为我的孙女编写一个“时间表”练习程序。我对编程很陌生(刚刚过了“Hello World”阶段)。我设置了一个“问候”表单,在该表单中询问用户(我的孙女,通常但不总是)她的名字,并且在按下 Enter 键时,会看到一个包含友好消息和单击请求的文本框如果她想“玩”,请在消息上。如果她点击,她会被带到一个组合框,在那里她可以选择一个“游戏”。我想在那个文本框上附加一个计时器,如果她在 5 秒内没有点击,它会显示另一个文本框。我已经将计时器附加到表单并启用它,但无法确定下一步该做什么。这是我到目前为止的代码:

private void playerOneNameTextbox_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter) 
                greetingsTextbox.Visible = true;               
                greetingsTextbox.Text = "Hi, " + playerOneNameTextbox.Text +
            ". It's good to see you. Click here if you'd like to play with us";

            timer1.Enabled = true;

            /*If there is no click within five seconds, 
             *another textbox should become visible offering another chance to click.
             */                                              
        }

        private void greetingsTextbox_Click(object sender, EventArgs e)
        {
            youHaveClickedLabel.Visible = true;
            chooseGameComboBox.Visible = true;
        }

如果这个问题过于冗长,请致歉 - 如果是,请告诉我,我下次会尽量简洁。非常感谢。

【问题讨论】:

    标签: c# timer


    【解决方案1】:

    您没有提供有关如何设置计时器的任何详细信息(或者它是什么类型的计时器,因为我相信有几个)。

    我假设您已经通过 Visual Studio 设计了表单并从工具箱中拖入了一个计时器。

    既然如此,它应该是一个System.Windows.Forms.Timer定时器对象。

    这种类型的计时器有一个 Tick 事件,您需要将其关联到一个事件处理程序。在 VS 中,您可以通过右键单击 timer1 对象(位于设计窗口的底部)并选择属性来执行此操作。在出现的属性窗口中,单击事件按钮(看起来像一个闪电)。在这里,您将拥有一个事件“Tick”。

    双击它,它将自动创建事件处理程序存根代码,然后您可以对其进行修改以执行您需要的操作。

    您可能希望更改 timer1 对象上的 Interval 值,因为这是在触发 Tick 事件之前经过的时间长度(以毫秒为单位),因此在您的情况下,您希望它读取 5000。

    【讨论】:

    • 感谢您的帮助,Ceisc。是的,您对 Timer 的类型是正确的 - 我从工具箱中取出它,更改了属性(名称和持续时间),并且根据您的建议,我现在创建了存根代码。这就是我仍然卡住的地方。这看起来很荒谬,但我就是想不出任何可行的方法。
    • 只是为了让你知道,Ceisc,我发现我哪里出错了 - 我需要在显示问候语的按键事件上放置一个“计时器启动”(不是“启用计时器”) .现在一切都如我所愿。
    猜你喜欢
    • 2015-02-23
    • 2016-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多