C#GUI中的简单函数调用

本文关键字:函数调用 简单 C#GUI | 更新日期: 2023-09-27 18:25:10

我是C#的新手。我有两个表单中的文本框和一个按钮。当我点击按钮时,我希望将值1放入文本框1,然后计算平方并放入文本框2。然后,我希望代码为1-20之间的每个数字循环,并将相应的值放在文本框中。我写这段代码只是为了习惯函数调用。我的代码在下面,但它似乎什么都没做:-

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Threading;
namespace WindowsFormsApplication3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            for (int initialVal = 1; initialVal >= 20; initialVal++)
            {
                textBox1.Text = initialVal.ToString();
                int sum = calculation(initialVal);
                textBox2.Text = sum.ToString();
                System.Threading.Thread.Sleep(500);
            }
        }
        static int calculation(int x)
        {
            int sum;
            while (x <= 20)
            {
                sum = x * x;
                x++;
                return sum;
            }
            return 0;
        }
    }
}

有什么建议吗?

C#GUI中的简单函数调用

两件事:

1)

for (int initialVal = 1; initialVal >= 20; initialVal++)

这永远不会有任何作用,因为满足了退出条件——你可能指的是initialVal <= 20

2) 您需要使用后台线程,否则您的GUI将不会更新,直到按钮1 _单击处理程序完全完成。例如,看看BackgroundWorker课程。

您的for循环将永远不会执行,因为它的条件不满足:

initialVal >= 20

将其更改为

initialVal <= 20

以执行循环20次。

根据其他人的建议更改循环。

而且,对于这条线,我认为你可以简单地进行

int sum = initialVal * initialVal ;

你不需要计算一个数字的平方,这个函数也不会做任何有意义的事情。

在GUI中调用Sleep会使应用程序无响应,因此最好使用后台线程或计时器。计时器比较容易。首先,在设计视图中,只需将Timer(位于工具箱的Components部分)拖放到表单上。将Interval属性设置为500。然后双击它,把你的更新代码放在那里。请注意,您不需要循环;你只需要一些代码来告诉它每次勾选都要增加initialVal,并在20:停止

    private void timer1_Tick(object sender, EventArgs e) {
        textBox1.Text = initialVal.ToString();
        int sum = calculation(initialVal);
        textBox2.Text = sum.ToString();
        if (initialVal++ == 20)
            timer1.Enabled = false; 
    }

现在,将button_click代码更改为简单地启动计时器:

    private void button1_Click(object sender, EventArgs e) {
        initialVal = 1;
        timer1.Enabled = true;
    }

最后将initialVal作为成员变量,因为两个函数都需要访问它:

public partial class Form1 : Form {
    int initialVal;