Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#面板背景色变化缓慢(或事件缓慢)_C#_Performance_Events_Panel_Backcolor - Fatal编程技术网

c#面板背景色变化缓慢(或事件缓慢)

c#面板背景色变化缓慢(或事件缓慢),c#,performance,events,panel,backcolor,C#,Performance,Events,Panel,Backcolor,我正在用c#制作VS2013游戏《策划者》的变体。我的问题是,我制作了4个小面板,人们可以点击来设置代码。当他们单击面板时,会启动一个事件,该事件会更改面板的背景颜色。我的问题是如果我点击面板,颜色变化太慢。当您尝试快速滚动颜色时,这一点最为明显。切换到下一个需要半秒钟的时间。除了颜色的改变,我已经试着对我在事件中所做的每一点代码进行注释,但是没有帮助,所以我不认为代码运行时间太长。有人有这方面的经验吗 编辑: 使用Visual Studio 2013中的标准表单 这是你们有些人要的密码。。。不

我正在用c#制作VS2013游戏《策划者》的变体。我的问题是,我制作了4个小面板,人们可以点击来设置代码。当他们单击面板时,会启动一个事件,该事件会更改面板的背景颜色。我的问题是如果我点击面板,颜色变化太慢。当您尝试快速滚动颜色时,这一点最为明显。切换到下一个需要半秒钟的时间。除了颜色的改变,我已经试着对我在事件中所做的每一点代码进行注释,但是没有帮助,所以我不认为代码运行时间太长。有人有这方面的经验吗

编辑: 使用Visual Studio 2013中的标准表单 这是你们有些人要的密码。。。不过不多

    private void InputCode1Clicked(object sender, EventArgs e)
    {
        code1++;
        if (code1 > 5)
        {
            code1 = 0;
        }
        this._input1.BackColor = ENUMS.GetColor((ENUMS.color)code1);
        _controller.InputCodeClicked(sender, e, 1);
    }
请记住,即使是这样:

    private void InputCode1Clicked(object sender, EventArgs e)
    {
        this._input1.BackColor = ENUMS.GetColor((ENUMS.color)code1);
    }

它仍然运行缓慢…

修复了它!使用mouseDown事件而不是mouseclicked/clicked事件解决了我的问题

MouseDown有帮助,因为当快速单击时,您可能每秒都会得到双击,而不是单击。鼠标向下不会受到双击的影响。

如果看不到您的代码,就很难对如何提高性能提出建议。在此处添加一些代码将是明智之举,以便有人可以查看并向您提供优化建议。您使用的是哪种UI框架?WPF?银灯?Windows运行时?WinForms?问题代码是什么样子的?考虑使用一个按钮,而不是显式的点击操作,这样你就能自动地处理键盘,我怀疑一个事件会比另一个慢。一旦触发,代码仍然会排队等待UI线程。我相信你提到的慢是因为点击事件只有在你释放按钮后才会触发,而MouseDown会在你按下按钮时立即触发。但最好的学习方法是经常先失败:)