fallwinters 2016-08-02 08:53 采纳率: 50%
浏览 968
已采纳

【C#菜鸟】打字游戏,为什么StatusScrip没有更新数据?

图片说明

图片说明

问题如下:
为什么StatusScrip控件没有更新数据?

源代码如下:

Form1.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace 打字游戏120160802
{
public partial class Form1 : Form
{

Random random = new Random();
Status status = new Status();

    public Form1()
    {


        InitializeComponent();
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        listBox1.Items.Add((Keys)random.Next(48, 57));

        if (listBox1.Items.Count > 10)
        {
            listBox1.Items.Clear();
            listBox1.Items.Add("Game Over");
            timer1.Stop();
        }


    }

    private void Form1_Load(object sender, EventArgs e)
    {


    }

    private void Form1_KeyDown(object sender, KeyEventArgs e)
    {
        if (listBox1.Items.Contains(e.KeyCode))
        {
            listBox1.Items.Remove(e.KeyCode);
            listBox1.Refresh();

            if (timer1.Interval > 400)
                timer1.Interval -= 1;
            if (timer1.Interval > 250)
                timer1.Interval -= 1;
            if (timer1.Interval > 100)
                timer1.Interval -= 1;

            difficultyProgressBar.Value = 800 - timer1.Interval;

            status.Update(true);

        }
        else
        {
            status.Update(false);
        }
        correctLabel.Text = "Correct: " + status.Correct;
        missedLabel.Text = "Missed: " + status.Missed;
        totalLabel.Text = "Total: " + status.Total;
        accuracyLabel.Text = "Accuracy: " + status.Accuracy + "%";
    }

    private void statusStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
    {

    }
}

}

类——Status.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 打字游戏120160802
{
class Status
{
public int Total = 0;
public int Missed = 0;
public int Correct = 0;
public int Accuracy = 0;

    public void Update(bool correctKey)
    {
        Total++;

        if (!correctKey)
        {
            Missed++;
        }
        else
        {
            Correct++;
        }

        Accuracy = Correct / (Missed + Correct) * 100;

    }
}

}

谢谢!

  • 写回答

1条回答 默认 最新

  • fallwinters 2016-08-02 09:50
    关注

    因为没有把窗体的Keypreview属性改成true,因此导致没有更新,代码是没有问题的,终于找到问题所在了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 根据以下文字信息,做EA模型图
  • ¥15 删除虚拟显示器驱动 删除所有 Xorg 配置文件 删除显示器缓存文件 重启系统 可是依旧无法退出虚拟显示器
  • ¥15 vscode程序一直报同样的错,如何解决?
  • ¥15 关于使用unity中遇到的问题
  • ¥15 开放世界如何写线性关卡的用例(类似原神)
  • ¥15 关于并联谐振电磁感应加热
  • ¥60 请查询全国几个煤炭大省近十年的煤炭铁路及公路的货物周转量
  • ¥15 请帮我看看我这道c语言题到底漏了哪种情况吧!
  • ¥60 关机时蓝屏并显示KMODE_EXCEPTION_NOT_HANDLED,怎么修?
  • ¥66 如何制作支付宝扫码跳转到发红包界面