0

VS 2012、WinForms、C# での作業...

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 にあったルーチンを MouseClick イベントに配置しましたが、機能しますが、必要なときに機能しません...正しい ID で再ロードするには、数回クリックする必要があります。近づいている気がしますが、まだ適切なイベントではありません。

4

3 に答える 3

0

理解した!!

単純なifステートメントをSelectedValueChangedルーチンに追加することになり、すべてが修正されました。

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

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

今は完璧に動作します。

于 2013-02-22T17:03:27.190 に答える
0

これを試して:

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

}
于 2013-02-22T16:57:13.083 に答える
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
}
于 2013-02-23T04:54:26.397 に答える