反转循环

时间:2013-07-22 16:05:07

标签: c# loops

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

  

System.Windows.Forms.TextBox,Text:System.Windows.Forms.TextBox,   文字:Syst ......

这是我的代码:

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
XX
X

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

9 个答案:

答案 0 :(得分: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;

答案 1 :(得分:5)

而不是

textBox2.Text = textBox2 + 

使用

textBox2.Text = textBox2.Text + 

在最后一行。

就是这样; - )

答案 2 :(得分:3)

textBox2.Text = textBox2 + Environment.NewLine;

应该是

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

System.Windows.Forms.TextBox只是班级名称

答案 3 :(得分:3)

你在倒数第二行错过.Text。它应该是:

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

或只是:

textBox2.Text += Environment.NewLine;

答案 4 :(得分: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();出错 - 您无法将string分配给int

答案 5 :(得分: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;

答案 6 :(得分:1)

这里有两个点。

textBox.Text..ToString();

这应该抛出编译错误。而且你不能将它分配给整数类型的变量。

textBox2.Text = textBox2 + Environment.NewLine;

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

答案 7 :(得分: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,因为这不直接回答问题。

答案 8 :(得分: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. 转换TextBox值
  3. 在最后一行
  4. 中将textBox2更改为textBox2.Text
  5. 将textBox用作多行文本框