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;
}
}
}
有什么建议吗?
两件事:
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;