2013-02-07 2 views
1

목록 상자를 만들고 완벽하게 작동하며 검색 기능을 만들었지 만 목록에서 항목을 숨기고 색인을 통해 검색 할 때만 표시하려고합니다. 여기 항목 목록 상자에 항목 표시/숨기기

private void Savebtn_Click(object sender, EventArgs e) 
{ 
    addTolist(gatherItem()); 
    refreshView(); 
} 

private void addTolist(Person p) 
{ 
    Person.listperson.Add(p); 
} 

private void refreshView() 
{ 
    listBox1.Items.Add(getItem()); 
} 

private String getItem() 
{ 
    String result = null; 
    foreach (Person p in Person.listperson) 
    { 
     result = p.lastname; 
    } 
    return result; 
} 

이 검색

private void button1_Click(object sender, EventArgs e) 
{ 
    int index = listBox1.FindString(textBox6.Text); 
    if (0 <= index) 
    { 
     listBox1.SelectedIndex = index; 
    } 
} 

내 코드는 다음의 방법이있다

를 추가하는 내 코드는? 감사합니다 :)

답변

2

winforms 함께 이렇게 쉬운 방법은 없습니다. WPF를 사용하면 훨씬 쉽습니다. winforms로 당신은 remove 항목을해야합니다. 목록 상자는 MSDN 설명서에 따라 코드에서 직접 사용되기 때문에 기술적으로 데이터 바인딩을 사용할 수는 있지만 전혀 권장하지 않습니다.

두 번째 생각에 목록 상자를 오버 드로하고 숨길 항목을 투명하거나 무언가로 설정할 수 있지만 쉽지는 않습니다. 모든 값을 배열에 저장 한 다음 배열을 반복하고 원하는 요소 만 추가하는 것이 좋습니다. 또는 WPF로 전환하십시오.

희망이 도움이됩니다.

+0

처럼 쓰는 코드로 같은 효과를 보관할 수 있습니다, 그것은 가능하지만 난 그게 힘들 것 같아요 코딩 :( – Pyromancer

+1

@ AlfredSanz 그게 작동하거나, 당신이 언급 한 배열을 사용할 수 – FrostyFire

0

원본 ListBox를 원점에 덮고 원점을 보이지 않게 설정할 수 있습니다. 가 그런 다음 나는 그들이 삽입 목록 상자를 숨기고 다음 보이는리스트 박스에 검색 항목을 전송하기로 결정하고있어

class DummyItem { 
     public string text; 
     public int index; 
     public override string ToString() { 
     return text; 
    } 
} 

public void build_dummy() { 
    listbox_dummy.Items.Clear(); 

    for (int i = 0; i < listbox_origin.Items.Count; i++) { 

     // replace with your own judgement 
     if (! should_hide(listbox_origin.Items[i])) { 
      DummyItem item = new DummyItem(); 
      item.text = listbox_origin.Items[i].ToString(); 
      item.index = i; 
      listbox_dummy.Items.Add(item); 
     } 

    } 
} 

private void listbox_dummy_SelectedIndexChanged(object sender, EventArgs e) { 
    var item = (DummyItem) listbox_dummy.SelectedItem; 
    var index = item.index; 
    listbox_origin.SelectedIndex = index; 
} 
관련 문제