2010-07-28 8 views
4

위쪽/아래쪽 화살표 키 동작을 모방하기 위해 두 개의 단추를 프로그래밍하려고합니다. 즉, 위로 단추를 누르면 내 목록 상자에서 한 항목 위로 이동합니다. 이 항목의 선택을 잃는 버튼을 누르면, 그러나 ... 선택 인덱스가 제대로 설정되어 작동프로그래밍 방식으로 다음 목록 상자 항목을 선택하십시오.

private void mainlistup(object sender, System.Windows.RoutedEventArgs e) 
{ 
    if (listBox_Copy.SelectedIndex != -1 && 
     listBox_Copy.SelectedIndex < listBox_Copy.Items.Count && 
     listBox_Copy.SelectedIndex !=1) 
    { 
     listBox_Copy.SelectedIndex = listBox_Copy.SelectedIndex - 1; 
    } 
} 

private void mainlistdown(object sender, System.Windows.RoutedEventArgs e) 
{ 
    if (listBox_Copy.SelectedIndex < listBox_Copy.Items.Count && 
     listBox_Copy.SelectedIndex != -1) 
    { 
     listBox_Copy.SelectedIndex = listBox_Copy.SelectedIndex + 1; 
    } 
} 

(선택한 항목에 바인더 제본 다른 databinded 항목, 올바른 값을 표시) : 나는 다음과 같은 코드를 작성 그러나 목록 상자 항목은 더 이상 강조 표시되지 않습니다. 선택한 항목을 강조 표시되도록 설정하려면 어떻게합니까?

답변

2

GenericTypeTea가 말했듯이, 그것은 손실을 중심으로 할 가능성이 높습니다 소리. 그러나 또 다른 문제는 코드가 복잡 해져서 맨 위에있는 항목까지 갈 수 없다는 것입니다.

이동 아래로 이동

if (listBox_Copy.SelectedIndex < listBox_Copy.Items.Count - 1) 
{ 
    listBox_Copy.SelectedIndex = listBox_Copy.SelectedIndex + 1; 
}    
+0

그래, 좋아. (listbox_copy.selectedindex == 0) {listbox_copy.focus();} 첫 번째 항목을 선택하고 포커스를 다시 누르면 .. – internetmw

+0

개인적으로 Focus() 메서드를 캡슐화하지 않아도됩니다. if 문. 나는 위/아래로 모든 버튼을 클릭 할 때마다 그걸 할 것입니다. – GenericTypeTea

+0

당신이 나아 졌어요! 감사 – internetmw

5

귀하의 ListBox는 아마 초점을 잃었을 것입니다. 그냥 SelectedIndex을 설정 한 후 다음을 수행 :

listBox_Copy.Focus(); 
+0

감사

if (listBox_Copy.SelectedIndex > 0) { listBox_Copy.SelectedIndex = listBox_Copy.SelectedIndex - 1; } 

최대 : 내가 좋아하는 무언가로 변경 좋을 것! 보이지 않는 항목이 선택되면 목록 상자를 스크롤하는 방법을 알 수 있습니까? – internetmw

+0

@internetwjm : 아마도 ListBox.TopIndex를 찾고있을 것입니다. 자세한 내용은 여기를 참조하십시오. http://msdn.microsoft.com/en-us/library/system.windows.forms.listbox.topindex.aspx –

+0

System.Windows.Controls.Listbox에는 topindex에 대한 정의가 없습니다. ? 나는 어떤 종류의 참조를 포함해야합니까? – internetmw

관련 문제