Сортировка в форме C#
Помогите решить вопрос.
При нажатии на кнопку генерации получается массив и выводится на экран, с этим проблем нет.
Но как при нажатии на "сортировка" вывести отсортированный массив в другой textBox?

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 WindowsFormsApp2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
int[] array = new int[20];
Random rand = new Random();
for (int i = 0; i < array.Length; i++)
{
array[i] = rand.Next(-20, 100);
textBox1.Text += " " + array[i];
}
}
private void button2_Click(object sender, EventArgs e)
{
string a = textBox1.Text;
textBox2.Text = a;
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
private void textBox2_TextChanged(object sender, EventArgs e)
{
}
}
}
Ответы (2 шт):
Сделайте массив полем
private int[] array = new int[20];
private void button1_Click(object sender, EventArgs e)
{
Random rand = new Random();
for (int i = 0; i < array.Length; i++)
{
array[i] = rand.Next(-20, 100);
}
textBox1.Text = string.Join(" ", array);
}
private void button2_Click(object sender, EventArgs e)
{
Array.Sort(array); // вместо этого, здесь вы можете вызвать метод своей сортировки
textBox2.Text = string.Join(" ", array);
}
Сначала получаем текст и записываем его в переменную str, после этого разделяем полученный текст на основе символа пробела при помощи метода Split().
Полученный результат (string[]) перебираю методом Select из пространства имен System.Linq (необходимо будет подключить сверху using System.Linq).
Параметром является какая-то функция, в моем случае функция, которая конвертит каждый элемент массива в int. Затем применяем метод OrderBy, который на основе какого-то ключа сортирует элементы.
И в конце приводим к массиву с помощью метода ToArray()
private void button2_Click(object sender, EventArgs e)
{
string str = textBox1.Text;
//отсортированные элементы
int[] arr = str.Split(' ').Select(x => Convert.ToInt32(x)).OrderBy(x => x).ToArray();
textBox2.Text = string.Join(" ", arr);
}