首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >增/减时间

增/减时间
EN

Stack Overflow用户
提问于 2018-04-08 18:14:54
回答 1查看 229关注 0票数 0

你好,我在尝试制作一个简单的事件调度程序时,遇到了一些问题。在下面的代码中,我的意图是增加或减少时间(当使用鼠标事件按下按钮时)。

然而,经过多次尝试,我不知道为什么我可以增加,但没有减少时间。

代码语言:javascript
复制
    // Timer
    private Timer TmrCount;

    private int HH {get;set;}
    private int MM { get; set; }

    private Button CurrBtn = new Button();

    #region <Mouse Events>
    private void OnMouseDown(object sender, EventArgs e)
    {
        CurrBtn = (Button)sender;

        StartTimer();
    }

    private void OnMouseUp(object sender, MouseEventArgs e)
    {
        StopTimer();
    }
    #endregion

    #region <Timer>
    private void StartTimer()
    {
        if (TmrCount == null)
        {
            TmrCount = new Timer();
            TmrCount.Interval = 210;
            TmrCount.Tick += TmrCount_Tick;
            TmrCount.Start();
        }
    }

    private void TmrCount_Tick(object sender, EventArgs e)
    {
        Set_Time();
    }

    private void StopTimer()
    {
        if (TmrCount != null)
        {
            TmrCount.Stop();
            TmrCount.Dispose();
            TmrCount.Tick -= TmrCount_Tick;
            TmrCount = null;
        }
    }

    private void Set_Time()
    {
        switch (CurrBtn.Text)
        {
            case "+":
                // Condition Check (Increase HH))
                //if (HH == 23) { HH = default(int); }

                //Increase HH
                //if (HH < 23) { HH += 1; }

                while (HH < 23) { HH++; break; }
                break;

            case "-":
                // Condition Check (Decrease HH)
                //if (HH == default(int)) { HH = 23; }
                //if (HH == 0) { HH = 23; }

                // Decrease HH
                while (HH > 23) { HH-=1; break; }
                break;
        }

        // Set Hour Text into Label
        lbl_HH.Text = Convert.ToString(HH);
    }
    #endregion

有人能给我指明正确的方向吗?提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-08 18:22:05

假设您的HH变量以值1开头,那么您应该以这种方式更改SetTime。

代码语言:javascript
复制
int HH = 1;

private void Set_Time()
{
    switch (CurrBtn.Text)
    {
        case "+":
            // Condition Check (Increase HH))
            // Within a limit of 23
            while (HH < 23) { HH++; break; }
            break;

        case "-":
            // Condition Check (Decrease HH)
            // Decrease HH but don't allow it to be less than 0 
            while (HH >= 0) { HH-=1; break; }
            break;
    }

    // Set Hour Text into Label
    lbl_HH.Text = Convert.ToString(HH);
}

顺便说一句,在释放对象之后,即使删除事件处理程序,也不应该尝试访问它。

代码语言:javascript
复制
private void StopTimer()
{
    if (TmrCount != null)
    {
        TmrCount.Stop();
        TmrCount.Tick -= TmrCount_Tick;
        TmrCount.Dispose();
        TmrCount = null;
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49721155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档