输出在标签而不是消息框中

本文关键字:消息 标签 输出 | 更新日期: 2023-09-27 18:23:48

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                int a, b;
                bool prime = true;
                a = int.Parse(textBox1.Text);
                b = int.Parse(textBox2.Text);

                int i = a;
                while (i < b)
                {
                    for (int j = 2; j <= i; j++)
                    {
                        if (i != j && i % j == 0)
                        {
                            prime = false;
                            break;
                        }
                    }
                    if (prime)
                    {
                        string ans = i.ToString();
                        MessageBox.Show(ans);
                    }
                    prime = true;
                    i++;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
    }
}

程序显示从开始(文本框1(到结束(文本框2(的质数您可以在两个文本框中输入任何数字,它将显示用户在文本框 1 和文本框 2 中输入的给定范围内的质数。我的问题是如何将输出放在标签而不是消息框中?它的输出只显示一个数字,每当我改变时它都不能显示多个数字

MessageBox.Show(ans);

label4.Text = ans;

MessageBox.Show(ex.Message);

label4.Text=ex.Message;

我只使用了一个标签,它是label4 .请帮忙。

输出在标签而不是消息框中

如果我

正确理解您的问题,并不是您在弄清楚如何设置Label.Text属性本身时遇到麻烦,而是您在一次显示多个数字时遇到问题。

不幸的是,您的问题没有向我们展示您在实现这一目标方面所做的尝试。 即您发布的代码仍然使用 MessageBox ,而不是您为实现目标所做的任何其他尝试(不成功(。因此,很难知道什么是可取甚至可接受的方法。

一种选择是将所有计算的数字放入单个Label控件中。例如:

    private void button1_Click(object sender, EventArgs e)
    {
        try
        {
            int a, b;
            bool prime = true;
            List<int> results = new List<int>();
            a = int.Parse(textBox1.Text);
            b = int.Parse(textBox2.Text);
            int i = a;
            while (i < b)
            {
                for (int j = 2; j <= i; j++)
                {
                    if (i != j && i % j == 0)
                    {
                        prime = false;
                        break;
                    }
                }
                if (prime)
                {
                    results.Add(i);
                }
                prime = true;
                i++;
            }
            label1.Text = string.Join(", ", results);
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

或者,也许您确实希望单独显示每个数字,但您希望代码显示该数字的时间足够长,以便用户在继续下一个数字之前看到它:

    private async void button1_Click(object sender, EventArgs e)
    {
        try
        {
            int a, b;
            bool prime = true;
            a = int.Parse(textBox1.Text);
            b = int.Parse(textBox2.Text);
            int i = a;
            while (i < b)
            {
                for (int j = 2; j <= i; j++)
                {
                    if (i != j && i % j == 0)
                    {
                        prime = false;
                        break;
                    }
                }
                if (prime)
                {
                    label1.Text = i.ToString();
                    await Task.Delay(1000);
                }
                prime = true;
                i++;
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

这些只是众多合理选择中的两个。例如,您可能希望以ListBox或可滚动的多行TextBox显示结果。如果以上方法都没有解决您的问题,请编辑您的问题,以便更清楚地解释您尝试过的内容以及您希望代码执行的操作。

欢迎来到堆栈溢出!

  1. 将一个名为 MyLabelLabel控件添加到窗体中。(也可以是任何名称(

  2. MessageBox.Show(ex.Message);更改为MyLabel.Text = ex.Message;

在表单中添加一个标签,然后简单地放置(假设它被命名为 label1(

label1.Text=ans;

.文本是大多数控件的属性。您已经在整数解析中使用了文本框的"get"访问器。 文本定义一个"集",可以在 c# 中使用它来更改显示的文本。

在此处阅读有关属性的更多信息,因为它们在 C# 中广泛使用