【问题标题】:C# Increment for loop every time button is pressed每次按下按钮时,C#循环递增
【发布时间】:2016-02-29 00:04:21
【问题描述】:

我在发布之前搜索了一些东西,但我找不到这样的东西。基本上,我想从文本框中获取文本,保存为变量(比如 history1),以便将来能够调用它来显示文本。我可以这样做,但我坚持的是我想要 3 个变量(例如,history1、history2 和 history3),每次按下按钮时,字符串都会移动到下一个变量。

例如,按钮被按下,文本保存为变量history1。文本改变,再次按下按钮,history1中的文本被移动到变量history2,新文本保存为history1。不过,这只需要对 3 个实例有效,而不是无限次,所以当文本存储在 history3 中并且按下按钮时,文本就会被覆盖。

我想到的方法是:

string history1;
string history2;
string history3;

        for (int i = 1; i < 4; i++)
        {
            history1 = txtOutput.Text;
            btnToFile_Click()
            {
                history2=history1;
                btnToFile_Click()
                {
                  history3=history2;
                }

            }
        }

但是,这是行不通的,因为 btnToFile_Click 不接受任何争论。有没有更简单的方法来解决这个问题,或者只是一种解决方法而不是争论的方法?

提前致谢!

【问题讨论】:

    标签: c# visual-c#-express-2010


    【解决方案1】:

    确保在表单级别(不在任何方法内)删除 history1history2history3

    然后,在按钮的单击事件的处理程序中包含以下代码:

    history3 = history2;
    history2 = history1;
    history1 = txtOutput.Text;
    

    【讨论】:

    • 这太简单了,我知道我把它弄得太复杂了。谢谢!
    【解决方案2】:

    您不需要在循环中多次调用btnToFile_Click() 方法,只需将文本从结尾文本框以相反的顺序移动到另一个。您也不需要循环,因为您只有三个文本框。

    为什么要倒序?因此,您将值移动到下一个文本框,然后再被新值覆盖。

    所以:

    history3 = history2;
    history2 = history1;
    history1 = txtOutput.Text;
    

    【讨论】:

    • 感谢您解释为什么它是反向完成的,这是有道理的!
    【解决方案3】:

    btnToFile_Click() 是 btnToFile(一个按钮)的 Click 事件处理程序。您不应该自己调用该方法,它由 UI 框架(例如 WPF 或 WinForms 等)调用。顺便说一句,它确实接收一个参数,然后是事件源(因为您可以将相同的事件处理程序分配给多个按钮,并根据哪个按钮发送事件来做一些事情)

    【讨论】:

      【解决方案4】:

      您可以尝试保存在字符串数组中,并在调用按钮单击事件时移动其中的字符串

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-09-28
        • 1970-01-01
        • 2016-10-02
        • 1970-01-01
        • 2010-09-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多