123 lines
3.0 KiB
C#
123 lines
3.0 KiB
C#
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<int> valuesList = new List<int>();
|
|
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);
|
|
}
|
|
}
|
|
}
|