在文本框中显示不同的数字 [英] Display different numbers in a textBox

查看:141
本文介绍了在文本框中显示不同的数字的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想编写一个在textBox中显示数字110的代码.我编写了以下代码.但是不幸的是,在textBox中仅显示数字10.我的代码有什么问题?谢谢.

I want to write a code that displays numbers 1 to 10 in a textBox. Following code has been written by me. But unfortunately only number 10 is displayed in textBox. What is wrong in my code? Thanks.

public partial class Form1 : Form
{
    int i,j;

    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        for (i = 1; i <= 10; i++)
        {
            textBox1.Text = Convert.ToString(i);
            for (j = 0; j < 10000000; j++) ;
        }
    }
}

推荐答案

您不应在GUI线程中工作.当您完成一些简单的工作(少量计算)时,就没有问题了.但是,当您的工作比较单调时,请将其移交给后台工作人员.

You should not do work in GUI thread. When you have some simple work (small calculation), then there is not a problem. But when you have a loner work, move the work to background worker.

这是正确的方法:

using System;
using System.ComponentModel;
using System.Threading;
using System.Windows.Forms;

namespace BackgroundWorkerExample
{
  public partial class Form1 : Form
  {
    private BackgroundWorker worker;

    public Form1()
    {
      InitializeComponent();
      this.worker = new BackgroundWorker();
      this.worker.DoWork += Worker_DoWork;
      this.worker.ProgressChanged += Worker_ProgressChanged;
      this.worker.RunWorkerCompleted += Worker_RunWorkerCompleted;
      this.worker.WorkerReportsProgress = true;
    }

    private void Worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) => this.button1.Enabled = true;

    private void Worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
    {
      this.textBox1.Text = e.ProgressPercentage.ToString();
    }

    private void Worker_DoWork(object sender, DoWorkEventArgs e)
    {
      for (int i = 0; i <= 10; i++)
      {
        this.worker.ReportProgress(i);

        // do work
        Thread.Sleep(1000);
      }
    }

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

按钮(操作开始后)被禁用为无效.原因是为了防止尝试第二次执行后台线程.后台工作人员结束后,该按钮将启用.

The button (after the operation starts) is disabled to be inactive. The reason is, to prevent try second execution of the background thread. When the background worker ends, the button is enabled.

这篇关于在文本框中显示不同的数字的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆