2016-09-05 3 views
0

"..." 하나의 항목이 들어있는 목록 상자 (SelectionModethis topic에 언급 된대로 MultiExtended으로 설정 됨)가 있습니다. 사용자가이 파일을 두 번 클릭하면 단일 파일을 선택하는 대화 상자가 나타납니다. 사용자가 하나를 선택하면 대화 상자가 사라지고 파일이 목록에 추가됩니다. 이것은 모두 작동합니다.목록 상자에 항목을 추가하고 선택하십시오.

내 문제는 내 목록 상자 내에서 새로 추가 된 항목을 선택하고 싶습니다.. 그러나 다음과 같은 코드를 모두와 함께 - "..." 및 실제 파일이 선택됩니다 : 이제 "..." -entry 대신 파일의 선택

this.lbx.SetSelected(this.lbx.SelectedIndex, false);  // unselect ... 

:

private void lbx_DoubleClick(object sender, EventArgs e) 
{ 
    if (this.lbx.SelectedItem == "..." 
      && this.ofdReferences.ShowDialog() == DialogResult.OK 
    { 
     this.lbx.Items.Insert(this.lbx.SelectedIndex, this.ofdReferences.FileName); 
     this.lbx.SetSelected(this.lbx.SelectedIndex - 1, true); // select newly added entry 
    } 
} 

그래서 나는 또한이 라인을 추가했습니다.

심지어 SelectedIndex = this.lbxProjectReferences.SelectedIndex - 1을 사용해 보았습니다. 또한 목록에서 두 항목을 모두 선택합니다.

+0

은 왜 선택을 설정하는 lbx.selectedIndex을 사용하여이 방법을 사용? –

답변

0

SelectedIndex -property는 단일 선택 목록입니다. 그러나 은 더블 클릭 이벤트 내에서 멀티 목록에도 사용합니다. 더블 클릭은 암시 적으로 SelecteItem을 올바르게 설정하는 단일 항목을 선택하기 때문입니다.

그래서 내가 선택한 항목의 목록을 삭제하고 미안 관심 해당 항목을 추가합니다.

this.lbx.Items.Insert(this.lbx.SelectedIndex, this.ofdReferences.FileName); 
var idx = this.lbx.SelectedIndex; 
this.lbx.SelectedIndices.Clear(); 
this.lbx.SelectedIndices.Add(idx - 1); 
관련 문제