【问题标题】:c# colour change loopc# 颜色变化循环
【发布时间】:2017-11-30 06:11:44
【问题描述】:

我正在尝试创建一个“自动颜色更改循环”,换句话说,当某人的鼠标悬停在标签上时,它会快速重复更改颜色,例如 300 微秒。

private void label1_MouseHover(object sender, EventArgs e)
    {
        while (true)
        {
            Random color = new Random();
            Color randomColor = Color.FromArgb(color.Next(255), color.Next(255), color.Next(255)); label1.ForeColor = randomColor;
            return;
        }
    }

问题出在循环中,或者我应该说缺乏循环,我假设 while(true) 本身就是一个循环,如果我将鼠标保持在同一个地方,只要它结束了它会起作用的标签,但它只起作用一次,简单来说,我必须将鼠标悬停在它上面,然后离开该区域,然后再次悬停,让它改变颜色两次,理想的是我可以让它总是改变颜色,所以我不必悬停,但我想不出办法做到这一点,因为我需要 while 循环。第二部分的任何想法都值得赞赏,但不是必需的:)

【问题讨论】:

  • 如果你想让它改变鼠标在哪里,不要使用鼠标悬停,把它放在一个计时器里..另外,一个新的随机每个循环都是多余的..
  • 循环在这里没用,因为你最后有一个return语句。
  • return生成第一个随机颜色后。所以while循环只执行一次然后退出。另外:您不会对随机生成的颜色 randomColor 做任何事情,因为您正在分配变量但从未使用它。
  • @BugFinder 老实说,我什至没有注意到随机性,哈哈,但是我怎么把它放在计时器中,我不是很好的编码器,只是为了好玩而编码:3

标签: c# winforms while-loop


【解决方案1】:

好的,感谢那些意识到我是个白痴的人:3

对于其他可能想要/需要代码的人。

表格开头:

public Form2()
    {
        InitializeComponent();
        notifyIcon1.Visible = true;
        timer2.Start();

    }

private void timer2_Tick(object sender, EventArgs e)
    {
        timer2.Interval = 100;
        timer2.Enabled = true;
        timer2.Tick += changer;
    }

void changer (object sender, EventArgs e)
    {
        Random color = new Random();
        Color randomColor = Color.FromArgb(color.Next(255), color.Next(255), color.Next(255));
        label1.ForeColor = randomColor;
    }

现在添加这些,顺便说一句,我知道我仍然每次都会发布一个新的随机数,如果你想编辑它,请继续,但它对我很有效,所以我会保留它方式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-09
    • 2021-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多