2009-05-03 2 views
1

을 사용하여 다른 항목을 선택하는 중 문제가 발생했습니다. ListView.SelectedItems [0]에서이 메서드를 사용하여 현재 선택된 ListViewItem을 표시된 함수의 인수로 반환합니다. 선택한 경우 텍스트 상자에 항목의 텍스트. 이 메서드는 Listview_SelectedIndexChanged 이벤트로 설정됩니다. 문제는C# : ListView.SelectedItems [0]

ArgumentOutOfRangeException이 처리되지 않은 '0'의 InvalidArgument = 값이었다, 지금 다른 항목을 선택할 때 읽기까지 이미 이전에 하나를 선택한 후, 오류가 오는 것입니다 '인덱스' Paramater 이름이 유효하지 않습니다 : 색인

왜 현재 목록보기에서 다음에 선택한 항목을 반환하려고 할 때 오류가 발생합니까? 이전에 하나를 선택한 후에 다른 항목을 선택한 후에 만 ​​발생합니다.

private void ShowItem(ListViewItem MyItem) 
    { 
     // This method inputs the text and subitem text of my listview item into two textboxes. 
     txtItemName.Text = MyItem.Text; 
     txtItemNickName.Text = MyItem.SubItems[1].Text; 
    } 

답변

4

"어떤 선택"도 가능한 상태입니다 : 여기

private void lvMyItems_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     // Return currently selected item. 
     ShowItem(lvMyItems.SelectedItems[0]); // The error occurs here. 
    } 

그리고

그것을 호출하는 방법입니다 : 여기

는 이벤트입니다. 색인 번호 0에 항목에 액세스하기 전에 SelectedItems.Count >= 1을 확인하십시오.

+0

당신은 천재입니다. 제공해 주신 솔루션에 감사드립니다. –

+0

이것은 똑같은 문제로 고통받는 나를 위해 일했지만 왜 그럴 수 없습니까? 선택 상태가 변경되기 전에 이벤트가 너무 빨리 실행됩니까? – IbrarMumtaz

1

두 번째 항목을 클릭하면이 문제가 발생합니다.

첫 번째 클릭은 정상적으로 작동하지만 두 번째 클릭을하면 예외가 발생합니다. 다른 항목을 클릭하면 첫 번째 항목의 '선택 상태'가 지워지고 두 번째 항목은 '선택됨'으로 표시되기 때문입니다. 두 번째 항목을 "selected"로 표시하기 전에 프로그램에서 ListView에 선택 항목이없는 상황이 발생합니다.이 항목은 프로그램에서 예외를 생성하는 이유입니다.

그래서 확인해야합니다. SelectedItems.Count >= 1