2013-02-22 2 views
0

VS 2012, WinForms, C#에서 작업 ...ComboBox 값을 선택한 후 ListBox를로드하는 방법은 무엇입니까?

ComboBox에서 선택한 값에 따라 채울 ListBox가 있습니다. 내 SQL 쿼리를 테스트하고 작동하지만 이상한 문제가 발생합니다. 루틴을 실행할 때 ComboBox가 비어 있고 ListBox가 나타납니다. 내 cb_Session_SelectedValueChanged 루틴에서 코드를 주석 처리 할 때 내 CB 및 LB는 잘로드되지만 내 주석이없는 경우 LB 및 CB가 비어있게됩니다.

private void cb_Session_SelectedValueChanged(object sender, EventArgs e) 
{ 
    listbox_Sessions.Visible = true; 
    LoadSessionListbox(); 
} 

private void LoadSessionListbox() 
{ 
    int tempID = Convert.ToInt32(cb_Session.SelectedValue); 
    // Code here to load listbox, which works without above routine. 
} 

나는 실종 뭔가를 :

이 내가 가진 무엇인가? 첫 번째 루틴이있는 CB 및 LB가 비어있는 이유는 무엇입니까?

[편집] :

나는 마우스 클릭 이벤트 SelectedValueChanged에 있던 루틴을 넣고 그것을 작동하지만, 나는 ... 당신은 그것을 다시 얻을 몇 번을 클릭하고 싶지 때 올바른 ID로로드하십시오. 나는 점점 가까워지고있는 것처럼 느껴지지만, 여전히 적절한 사건은 아닙니다.

+1

'cb_Session_SelectedValueChanged'이 양식이 초기화 될 때 아마 호출되는 및'cb_Session.SelectedValue'은 그 시점에서 'null' 아마입니다. 'cb_Session.SelectvedValue'가 null이기 때문에 그 값은 ListBox에로드됩니다. 무슨 일이 일어나고 있는지 정확히 알 수 있도록 더 많은 코드를 게시 할 수 있습니까? –

+0

@ IanO'Brien 할 수 있습니다. 게시 할 코드가 확실하지 않습니다. 나는이 형식의 코드에서 익사하고있는 지점에있다. – Claire

+0

콤보 상자에 영향을주는 목록 상자에서 발생한 이벤트가 있습니까? 당신이 게시 한 coude는 괜찮은 것 같지만 충분하지 않습니다. CB는 어떻게 그리고 언제 채워 집니까? –

답변

0

이 그것을 알아 냈어!

간단한 If 문을 SelectedValueChanged 루틴에 추가하여 모든 것을 수정했습니다!

private void cb_Sessions_SelectedValueChanged(object sender, EventArgs e) 
{ 
    listBox_Sessions.Visible = true; 

    if (cb_Sessions.SelectedValue != null) 
     LoadSessionListbox(); 
} 

이제 완벽하게 작동합니다.

+0

오 형을 편집합니다. 이벤트가 해고 되었기 때문에 null을 검사 할 필요가 없다고 생각했습니다. 그래서 SelectedValue null이 될 것이라고 가정합니다. 그것이 내가 편집 한 이유입니다.Bah well * shrug * –

+0

@DJBurb 나는 그것이 일하는 것이 행복 할 뿐이다. :) 당신 모두는 내가 필요한 시점까지 나를 많이 도왔습니다. – Claire

+0

방문하여 [faq] (http://stackoverflow.com/faq)': D' – spajce

0

이 시도 :

private void cb_Session_SelectedValueChanged(object sender, EventArgs e) 
{ 
    if(cb_Session.SelectedValue>-1) 
    { 
    listbox_Sessions.Visible = true; 
    LoadSessionListbox(); 
    } 

} 
+0

실제로 cb_Session.SelectedValue! = null이 필요하지 않습니다. –

0

SelectedIndexChanged Event에서 시도 및 후속

private void cb_Session_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    if (cb_Session.SelectedValue == null) return; 
    if (cb_Session.SelectedIndex == -1) return; 
    listbox_Sessions.Visible = true; 
    LoadSessionListbox((int)cb_Session.SelectedValue); 
} 

private void LoadSessionListbox(int selectedValue) 
{ 
    //TODO: Do stuff 
} 
관련 문제