コンボボックスから1つの値を取得し、リストを使用して別のコンボボックスに配置しようとしています。
リストから値を正常に削除し、他のリストに正常に実装しました。しかし、これを行うと、リストの容量が誤動作し、インデックスが範囲外のエラーになります。
シナリオ:
選択したリストレター:B
「左シフトボタンが押されました」
「B」が文字リストから削除されました
番号リストに「B」を追加
値を出力する
エラー:「インデックスが範囲外でした。負ではなく、コレクションのサイズ未満である必要があります
66行目:Console.WriteLine( "Numbers:" + numbers [i] + "\ tIteration:" + i);
数字リスト容量:8、文字リスト容量:4。
番号リスト:1、2、3、4、B。文字リスト:A、C、D
コード:
public partial class Form1 : Form
{
public List<string> letters = new List<string>();
public List<string> numbers = new List<string>();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
InitialiseLists();
LoadListsIntoCombo();
}
public void InitialiseLists()
{
/*
* Add Letter Data
*/
letters.Add("A");
letters.Add("B");
letters.Add("C");
letters.Add("D");
/*
* Add Number Data
*/
numbers.Add("1");
numbers.Add("2");
numbers.Add("3");
numbers.Add("4");
}
public void LoadListsIntoCombo()
{
comboLetter.DataSource = letters;
comboNumber.DataSource = numbers;
}
public void PrintList()
{
/*
* Print Lists To Console
*/
for (int i = 0; i < numbers.Capacity; i++)
{
Console.WriteLine("NUM CAPACITY: " + numbers.Capacity);
Console.WriteLine("Numbers: " + numbers[i] + "\tIteration: " + i);
}
for (int i = 0; i < letters.Capacity; i++)
{
Console.WriteLine("LET CAPACITY: " + letters.Capacity);
Console.WriteLine("Letters : " + letters[i] + "\tIteration: " + i);
}
}
private void cmdLeft_Click(object sender, EventArgs e)
{
AddLetterToNumber(GetLetter());
RemoveLetter(GetLetter());
}
public void RemoveLetter(string value)
{
letters.Remove(value);
}
public void AddLetterToNumber(string value)
{
numbers.Add(value);
}
public string GetLetter()
{
string letter = comboLetter.SelectedItem.ToString();
return letter;
}
public int GetLetterIndex()
{
int letterIndex = comboLetter.SelectedIndex;
return letterIndex;
}
private void cmdRight_Click(object sender, EventArgs e)
{
PrintList();
}
}
}
あなたが提供できるどんな助けにも感謝します。