如何使子进程与循环执行命令按钮

时间:2013-11-24 10:28:51

标签: c# loops switch-statement

好的,这是我昨天的问题

中的一种高级方法
switch (status)
    {
        case 0:
            {
                label1.Visible = false;
                label2.Visible = true;
                label3.Visible = false;
                status = 1;
                break;
            }
        case 1:
            {
                label1.Visible = false;
                label2.Visible = false;
                label3.Visible = true;
                status = 2;
                break;
            }
        case 2:
            {
                label1.Visible = true;
                label2.Visible = false;
                label3.Visible = false;
                status = 0;
                break;
            }
    }

我在命令按钮中使用此开关标志并取得了很多成功 但是我发现了一些很酷的东西,所以我认为这是一个很大的进步,可能是这样的

while (true)
{
    switch (status)
    {
        case 0:
            {
                label1.Visible = false;
                label2.Visible = true;
                label3.Visible = false;
                status = 1;
                break;
            }
        case 1:
            {
                label1.Visible = false;
                label2.Visible = false;
                label3.Visible = true;
                status = 2;
                break;
            }
        case 2:
            {
                label1.Visible = true;
                label2.Visible = false;
                label3.Visible = false;
                status = 0;
                break;
            }
    }
}

所以我只使用一个命令按钮,然后开关中的所有情况都开始重复并重复过来。 但是这个逻辑完全失败了,当我执行程序时没有任何想法。 我已经通过增加循环和失败来完成此操作, 在这种情况下是否有可能使用while循环?

1 个答案:

答案 0 :(得分:0)

单击button1后,这段代码将无限期地显示和隐藏标签。看看它是不是你想要的。

private void button1_Click(object sender, EventArgs e)
{
    button1.Enabled = false;

    var t = new System.Threading.Tasks.Task(Switcher);
    t.Start();
}

private void Switcher()
{
    int status = 0;

    while (true)
    {
        switch (status)
        {
        case 0:
            label1.Visible = false;
            label2.Visible = true;
            label3.Visible = false;
            status = 1;
            break;
        case 1:
            label1.Visible = false;
            label2.Visible = false;
            label3.Visible = true;
            status = 2;
            break;
        case 2:
            label1.Visible = true;
            label2.Visible = false;
            label3.Visible = false;
            status = 0;
            break;
        }

        System.Threading.Thread.Sleep(200);
    }
}