Я хочу создать простой графический интерфейс C # с текстовым полем, чтобы пользователи могли вставлять содержимое и повторно копировать отсортированный контент.
Например, пользователь вставит это в поле:
part # QTY
CS01-111-111 3
CS02-222-222 3
CS03-333-111 3
CS03-333-333 3
Тогда я хочу, чтобы программа сортировала все, что вставлено в нее, вот так. Сортировка только по первым 4 цифрам, но после нее сохраняется значение QTY:
part # QTY
CS03-333-111 3
CS03-333-333 3
CS01-111-111 3
CS02-222-222 3
У меня есть некоторый код C #, чтобы помочь мне сделать это, но он продолжает блокироваться.
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 WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public class Comparer : IComparer<string>
{
private Dictionary<string, int> _order;
public Comparer()
{
_order = new Dictionary<string, int>();
_order.Add("CS01", 1);
_order.Add("CS58", 2);
_order.Add("CS11", 3);
}
public int Compare(string x, string y)
{
if (x.Length < 4 || y.Length < 4)
return x.CompareTo(y);
if (!_order.ContainsKey(x.Substring(0, 4)) || !_order.ContainsKey(y.Substring(0, 4)))
return x.CompareTo(y);
return _order[x.Substring(0, 4)].CompareTo(_order[y.Substring(0, 4)]);
}
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
string[] items = textBox1.Text.Split(Environment.NewLine.ToCharArray());
Array.Sort<string>(items, 0, items.Length, new Comparer());
textBox1.Text = String.Join(Environment.NewLine, items);
}
}
}
Есть идеи, что я могу сделать, чтобы это исправить?