0

我做了这个小的嵌套 for 循环,它在 C# 中没有显示任何错误,但是当我尝试运行我的小程序时,我在我的中收到以下错误TextBox

System.Windows.Forms.TextBox,文本:System.Windows.Forms.TextBox,文本:系统...

这是我的代码:

int number = textBox.Text..ToString();
for (int row = 0; row < number; row++)
{
    for (int x = number - row; x > 0; x--)
    {
        textBox2.Text = textBox2.Text + "X";
    }
    textBox2.Text = textBox2 + Environment.NewLine;
}

我的结果应该是这样的:


XXXX
XXX
XXX
_

我无法弄清楚可能导致此错误的原因。

4

9 回答 9

6

您不能将字符串分配给数字。你需要转换它:

// int number = textBox.Text..ToString();
int number;
if (!int.TryParse(textBox.Text, out number)
{
    // Handle improper input...
}

// Use number now

此外,当您添加换行符时,您实际上需要附加到Text属性,而不是 TextBox 本身:

textBox2.Text = textBox2.Text + Environment.NewLine;
于 2013-07-22T16:08:50.003 回答
5

代替

textBox2.Text = textBox2 + 

利用

textBox2.Text = textBox2.Text + 

在最后一行。

而已 ;-)

于 2013-07-22T16:07:45.580 回答
3

textBox2.Text = textBox2 + Environment.NewLine;

应该

textBox2.Text = textBox2.Text + Environment.NewLine;

System.Windows.Forms.TextBox只是类名

于 2013-07-22T16:08:13.987 回答
3

您在.Text倒数第二行中缺少 a 。它应该是:

textBox2.Text = textBox2.Text + Environment.NewLine;
                        ^^^^^

要不就:

textBox2.Text += Environment.NewLine;
于 2013-07-22T16:08:23.937 回答
2

你不能分配string给一个int,你正在做的事情是:

int number = textBox.Text..ToString();

更好的选择是使用int.TryParse(textBox.Text, out number)

改变

textBox2.Text = textBox2 + Environment.NewLine; 

textBox2.Text = textBox2.text + Environment.NewLine;

编辑: 即使您将 2 个点更改为 1 个,它也会给出错误int number = textBox.Text.ToString();- 您不能分配stringint

于 2013-07-22T16:08:21.457 回答
2
int number = textBox.Text..ToString();        

假设这是一个错字?无论哪种方式,首先检查该值是否为数字。

if (int.TryParse(textBox.Text, out number))
{
       //run your loop here
}

还,

textBox2.Text = textBox2 + Environment.NewLine;

应该:

textBox2.Text = textBox2.Text + Environment.NewLine;
于 2013-07-22T16:08:32.897 回答
1

你这里有两个点。

textBox.Text..ToString();

顺便说一句,这应该会引发编译错误。而且您不能将其分配给整数类型的变量。

textBox2.Text = textBox2 + Environment.NewLine;

您必须在这里调用文本框的方法,大概是textBox2.Text.

于 2013-07-22T16:07:23.673 回答
1

这可能会激发您以不同的方式思考这个问题:

// I created a simple textbox class so I could do this in a console app
var textBox = new TextBox();
var textBox2 = new TextBox();
textBox.Text = "4";

var number = Convert.ToInt32(textBox.Text);
var descendingXStrings = Enumerable.Range(1, number)
                                   .Select(n => new string('X', n))
                                   .Reverse();
textBox2.Text = string.Join(Environment.NewLine, descendingXStrings);

Console.WriteLine(textBox2.Text);

CW,因为这不能直接回答问题。

于 2013-07-22T16:34:33.720 回答
0

尝试这个

int number = int.Parse(textBox1.Text);
for (int row = 0; row < number; row++)
{
    for (int x = number - row; x > 0; x--)
    {
        textBox2.Text = textBox2.Text + "X";
    }
    textBox2.Text = textBox2.Text + Environment.NewLine;
}
  1. 将文本框值转换为整数
  2. 在倒数第二行将 textBox2 更改为 textBox2.Text
  3. 使用 textBox 作为多行文本框
于 2013-07-22T16:33:20.653 回答