【问题标题】:How To Make A Child Execute Command Button with Looping如何让孩子通过循环执行命令按钮
【发布时间】:2013-11-24 10:28:51
【问题描述】:

好的,这是我昨天问题中的高级方法

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循环有什么可能吗?

【问题讨论】:

  • 你到底想做什么?
  • @nphx 我想做一个重复的切换程序
  • 您是否打算让那些break 语句跳出循环?
  • @nphx hm,我没明白你的意思,我的想法只是循环 switch 语句,所以我什至不必单击命令按钮来重复它
  • 这正是你所做的。那有什么意义呢?

标签: c# loops switch-statement


【解决方案1】:

点击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);
    }
}

【讨论】:

  • var t = new System.Threading.Tasks.Task(Switcher);先生,它不是一个有效的对象,而是 System.Threading.Thread.Sleep(200);可用
  • @Geofff 您使用的 .NET 版本是否低于 4.0?
  • 是的,我使用的是 .NET 2.0,所以这仅在 .NET 4.0 中可用
  • @Geofff 你可以改用var t = new System.Threading.Thread(Switcher);。
  • “跨线程操作无效:控件 'Form1' 从创建它的线程以外的线程访问。”顺便说一句,你制作代码的目的是什么?我想知道...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-06
  • 2011-10-31
  • 1970-01-01
相关资源
最近更新 更多