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; namespace W4Gui.Components { public partial class IntList : UserControl { private int lastIndex = -1; private string label = "%n"; private List valuesList = new List(); public string Label { get { return label; } set { label = value; createNumbersList(); } } public int[] Values { get { this.save(); return this.valuesList.ToArray(); } } private string formatStr(int idx) { return label.Replace("%n", (idx + 1).ToString()); } public void DelInt(int idx) { this.lastIndex = -1; this.valuesList.RemoveAt(idx); this.numberList.Items.RemoveAt(idx); createNumbersList(); this.numberList.SelectedIndex = idx - 1; } private void selectFirst() { if (this.numberList.SelectedIndex < 0) if (this.numberList.Items.Count > 0) this.numberList.SelectedIndex = 0; } public void LoadItems(int[] values) { this.valuesList.Clear(); this.numberList.Items.Clear(); foreach(int itm in values) { this.AddInt(itm); } selectFirst(); } public void AddInt(int value) { int idx = this.valuesList.Count; this.valuesList.Add(value); this.numberList.Items.Add(formatStr(idx)); } private void createNumbersList() { this.save(); this.numberList.Items.Clear(); for (int i = 0; i < valuesList.Count; i++) this.numberList.Items.Add(formatStr(i)); lastIndex = -1; selectFirst(); } public IntList() { InitializeComponent(); } private void save() { if (lastIndex >= 0) valuesList[lastIndex] = valueBox.Value; } private void load() { if (numberList.SelectedIndex >= 0) valueBox.Value = valuesList[numberList.SelectedIndex]; } private void numberList_SelectedIndexChanged(object sender, EventArgs e) { this.save(); this.load(); lastIndex = numberList.SelectedIndex; } private void btnAddNumber_Click(object sender, EventArgs e) { AddInt(0); numberList.SelectedIndex = valuesList.Count - 1; } private void btnDelNumber_Click(object sender, EventArgs e) { DelInt(numberList.SelectedIndex); } } }