我需要能够在我的按钮中使用randomNumbers []数组单击void但是如果我在我的按钮中输入void randomNumbers()中的内容,则单击void,每次我单击按钮时它都会使原来的随机订单生成。这不是我想要的。有没有什么方法可以调用/引用/使用/从其自己的void导入randomNumbers到按钮单击void。
背景知识:
我的总体目标最初填充了一个数组,其中包含0到90之间的90个数字,并且没有重复项,并且在按钮单击时显示在文本框中。经过几天尝试不同的方式,我使用这个和它最接近我来,因为没有重复。当按钮中的randomNumbers []单击无效时,富文本框将显示完全相同的数字,每次单击按钮时,它都会一次显示所有数字,因此我创建了另外两个显示的文本框数字一个接一个,但每次单击按钮时都会发生重复,randomNumbers []会以不同的顺序重新生成。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml.Linq;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
void randomNumbers()
{
Random rnd = new Random();
var randomNumbers = Enumerable.Range(1, 90).OrderBy(i => rnd.Next()).ToArray();
}
string space = " ";
int number;
void button1_Click(object sender, EventArgs e)
{
int[] array = randomNumbers;
for (int i = 0; i < 90; i++)
{
richTextBox1.Text += randomNumbers[i].ToString() + space;
richTextBox2.Text += array[i].ToString() + space;
number = array[i];
}
textBox1.Text += number.ToString() + space;
textBox2.Text += textBox1.Text;
textBox1.Clear();
}
}
}
答案 0 :(得分:1)
您的问题源于您的数组是void randomNumbers()
方法的本地数据。
解决方案非常简单;将randomNumbers
移动为class
宽变量,或者(更优雅的解决方案)将randomNumbers
的返回类型更改为int[]
数组。即:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml.Linq;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
int[] GenerateRandomNumbers()
{
Random rnd = new Random();
return Enumerable.Range(1, 90).OrderBy(i => rnd.Next()).ToArray();
}
string space = " ";
int number;
void button1_Click(object sender, EventArgs e)
{
int[] array = GenerateRandomNumbers();
for (int i = 0; i < 90; i++)
{
richTextBox1.Text += randomNumbers[i].ToString() + space;
richTextBox2.Text += array[i].ToString() + space;
number = array[i];
}
textBox1.Text += number.ToString() + space;
textBox2.Text += textBox1.Text;
textBox1.Clear();
}
}
}
或者,如果您需要保留列表class
- 广泛或不更改一旦实例化,您应该将其设为class
的变量-scoped:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml.Linq;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
int[] randomNumbers;
public Form1()
{
InitializeComponent();
randomNumbers = GenerateRandomNumbers();
}
int[] GenerateRandomNumbers()
{
Random rnd = new Random();
return Enumerable.Range(1, 90).OrderBy(i => rnd.Next()).ToArray();
}
string space = " ";
int number;
void button1_Click(object sender, EventArgs e)
{
int[] array = randomNumbers;
for (int i = 0; i < 90; i++)
{
richTextBox1.Text += randomNumbers[i].ToString() + space;
richTextBox2.Text += array[i].ToString() + space;
number = array[i];
}
textBox1.Text += number.ToString() + space;
textBox2.Text += textBox1.Text;
textBox1.Clear();
}
}
}
没有测试它,但它应该适合你。
编辑:刚试过它,据我所知可以正常工作。
答案 1 :(得分:0)
namespace WindowsFormsApplication1
{
public class generate
{
public static int[] randomNumbers()
{
Random rnd = new Random();
var randomNumbers = Enumerable.Range(1, 90).OrderBy(i => rnd.Next()).ToArray();
return randomNumbers;
}
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
string space = " ";
int number;
void button1_Click(object sender, EventArgs e)
{
int[] array = generate.randomNumbers();
for (int i = 0; i < 90; i++)
{
richTextBox1.Text += randomNumbers[i].ToString() + space;
richTextBox2.Text += array[i].ToString() + space;
number = array[i];
}
textBox1.Text += number.ToString() + space;
textBox2.Text += textBox1.Text;
textBox1.Clear();
}
}
}
试试这个。
答案 2 :(得分:-1)
试试这个
public partial class Form1 : Form
{
private int[] array;
private int mouseClickCount=0;
public Form1()
{
InitializeComponent();
GenerateRandomNumbers();
}
void GenerateRandomNumbers()
{
Random rnd = new Random();
array = Enumerable.Range(1, 90).OrderBy(i => rnd.Next()).ToArray();
}
void button1_Click(object sender, EventArgs e)
{
if(mouseClickCount == 90)
{
mouseClickCount =0;
richTextBox1.Clear();
}
mouseClickCount++;
richTextBox1.Text+=randomNumbers[mouseClickCount]+ " ";
}
}