2013-01-17 8 views
0

나는 윈도우 폼에 2 개의 목록 상자가 있고 그 상자 중간에 2 개의 버튼이 있습니다. 하나는 다른 오른쪽 쇼를 보여줍니다. 원하는 항목을 선택하면 listbox1에서 말하고 오른쪽 표시 버튼을 클릭합니다. listbox1에서 선택한 항목을 목록 1의 항목과 동일한 색인으로 복사하려고합니다. 그러나 빈 행을 복사 할 수 없습니다. 이것은 내 listbox가 어떻게 생겼는지 보여줍니다 (여기에 줄을 쉽게 추적하기 위해 숫자를 추가했습니다).선택한 ListBox1 항목을 동일한 인덱스의 ListBox2 목록에 복사하는 방법은 무엇입니까?

ListBox1    Listbox2 

1. u      a 
2. 
3. l      c 
4.       b 
5. m      e 
6.       f 
7. n  >>(right button)   
8.       c 
9. z  <<(left button) t 
10.       q 
11. s       
12.       
13. g      b 

이 상자에 텍스트가있는 항목을 선택하고 단추를 클릭하면 항목이 다른 목록 상자에 복사됩니다. 그러나 텍스트 나 빈 행을 선택하고 단추를 클릭하면 아무 것도 변경되지 않습니다. 다른 상자 항목을 비게하지 않습니다. 여기에 코드가 있습니다. 어떻게 행을 복사합니까?

private void button4_Click(object sender, EventArgs e) 
{ 

    List<int> selectedItemIndexes = new List<int>(); 
    foreach (string o in listBox1.SelectedItems) 
     selectedItemIndexes.Add(listBox1.Items.IndexOf(o)); 

    for (int i = 0; i < selectedItemIndexes.Count; i++) 
    { 
     listBox2.Items[selectedItemIndexes[i]] = listBox1.Items[selectedItemIndexes[i]]; 
    } 

    selectedItemIndexes.Clear(); 


} 

private void button3_Click(object sender, EventArgs e) 
{ 
    List<int> selectedItemIndexes = new List<int>(); 
    foreach (object o in listBox2.SelectedItems) 
     selectedItemIndexes.Add(listBox2.Items.IndexOf(o)); 

    for (int i = 0; i < selectedItemIndexes.Count; i++) 
    { 
     listBox1.Items[selectedItemIndexes[i]] = listBox2.Items[selectedItemIndexes[i]]; 
    } 

    selectedItemIndexes.Clear(); 
} 

어떻게 빈 행을 복사 할 수 있습니까? ; 때문에 라인을 (O listBox1.SelectedItems의 문자열)

foreach는 다음의 selectedItemIndexes.Add (listBox1.Items.IndexOf (O) -)이다

+1

당신은 SelectedIndices http://msdn.microsoft.com/en-us/library/system.windows.forms.listbox을 사용할 수 있습니다. SelectedItems 대신 selectedindices.aspx ... – craig1231

+0

이 답변을 주셔서 대단히 감사합니다. 모든 것을 마술로 해결했습니다! 고맙습니다. – user1767833

답변

1

빈 문자열을 가져 오며 항상 빈 문자열의 첫 번째 인덱스를 반환합니다.

솔루션은 다음과 같이 selectedIndices을 사용하는 것입니다

 foreach (int selectedItemInd in listBox1.SelectedIndices) 
     { 
      selectedItemIndexes.Add(selectedItemInd); 
     }