任何人都可以帮助我, 我正在尝试将我的数组元素显示到文本框和列表视图中 listview有效,但文本框显示我的int 6时间,这是我的代码:
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
ArrayList numbers = new ArrayList();
int[] myNumbers = new int[6];
Random rnd = new Random();
int randomNumber;
for (int i = 0; i < 6; i++)
{
do
{
randomNumber = rnd.Next(1, 49);
}
while (numbers.Contains(randomNumber));
numbers.Add(randomNumber);
}
numbers.Sort();
numbers.CopyTo(myNumbers);
//listView1.Items.Add(myNumbers.ToString);
foreach (int j in myNumbers)
{
listView1.Items.Add(j.ToString());
label1.Text += j.ToString();
int num1 = myNumbers[0];
int num2 = myNumbers[1];
int num3 = myNumbers[2];
int num4 = myNumbers[3];
int num5 = myNumbers[4];
int num6 = myNumbers[5];
textBox1.Text += num1;
textBox2.Text += num2;
textBox3.Text += num3;
textBox4.Text += num4;
textBox5.Text += num5;
textBox6.Text += num6;
}
}
private void button2_Click(object sender, EventArgs e)
{
textBox1.Text = "";
textBox2.Text = "";
textBox3.Text = "";
textBox4.Text = "";
textBox5.Text = "";
textBox6.Text = "";
listView1.Clear();
label1.Text = "";
}
}
}
有人可以帮助我,告诉我哪里出问题了吗?
答案 0 :(得分:0)
您应该
textBox1.Text = num1;
不是
textBox1.Text += num1;
编辑:您不需要循环...
答案 1 :(得分:0)
您正在循环中设置文本。因此,您要设置六次值,可以看到,因为要附加+ =。您可以将整个块移动到numbers.CopyTo(myNumbers);
之后,因此每个值仅设置一次。同样也不需要+ =。
int num1 = myNumbers[0];
int num2 = myNumbers[1];
int num3 = myNumbers[2];
int num4 = myNumbers[3];
int num5 = myNumbers[4];
int num6 = myNumbers[5];
textBox1.Text = num1.ToString();
textBox2.Text = num2.ToString();
textBox3.Text = num3.ToString();
textBox4.Text = num4.ToString();
textBox5.Text = num5.ToString();
textBox6.Text = num6.ToString();
答案 2 :(得分:0)
您的代码中几乎没有问题。
您不需要ArrayList numbers
和int[] myNumbers
,也可以按索引访问列表。
您使用了太多的幻数:6、1、49。它们可以用变量替换。
在将值添加到listView之前,可以清除它。您不必在foreach
上进行myNumbers
循环,您可以使用AddRange方法直接添加它们。
label1.Text+=j.ToString()
的结果有点难以理解,因为所有数字都粘在一起,结果为123564132321。
tbResult.Text = string.Join(", ", numbers);
将join然后以一个很好的“,”作为分隔符。
最后,如果您不想复制N次以上,则将同一行用于textbox.text初始化。您可以找到所有与模式匹配的文本框。
var numbers = new List<int>();
while (numbers.Count < userInput)
{
var tempRnd = rnd.Next(lowerBound, upperBound);
if (!numbers.Contains(tempRnd))
{
numbers.Add(tempRnd);
}
}
numbers.Sort();
listView1.Items.Clear();
listView1.Items.AddRange(numbers.Select(x => new ListViewItem { Text = x.ToString() }).ToArray());
tbResult.Text = string.Join(", ", numbers);
int i = 0;
foreach (TextBox tb in this.Controls.OfType<TextBox>().Where(l => l.Name.StartsWith("GeneratedTB_")))
{
tb.Text = numbers[i].ToString();
i++;
}