콤보 상자에서 하나의 값을 검색하여 목록을 사용하여 다른 콤보 상자에 넣으려고합니다.목록 인덱스 초과 범위
나는 성공적으로 목록에서 값을 제거하고 다른 목록 벌금으로 구현합니다. 그러나이 작업을 수행 할 때 목록 용량이 오작동하고 색인이 범위 밖으로 벗어납니다.
시나리오 :
List Letter Selected: B
'Left Shift Button Pressed'
'B' Removed from Letters List
'B' Added to Numbers List
Print Out Values
Error: "Index was out of range. Must be non-negative and less than the size of collection
Line 66: Console.WriteLine("Numbers: " + numbers[i] + "\tIteration: " + i);
Number List Capacity: 8, Letters List Capacity: 4.
Number List: 1, 2, 3, 4, B. Letters List: A, C, D
CODE : 당신이 제공 할 수있는 어떤 도움
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();
}
}
}
많은 감사합니다.
또는'foreach' 절에서
. –
그런 빠른 답장을 보내 주셔서 대단히 감사합니다. 감사드립니다. 제한 시간 이후에 수락합니다. – speak
@LuiggiMendoza 총계가 루프 밖에서 표시되도록 이동했습니다. OP가 인덱스를 표시하기를 원하기 때문에'for' 루프가 좋기 때문에 –