0

使用 VS 2012、WinForms、C#...

我有一个列表框,我想根据在组合框中选择的值来填充。我已经测试了我的 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

试试这个:

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

弄清楚了!!

我最终在我的 SelectedValueChanged 例程中添加了一个简单的 if 语句,它修复了所有问题!

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

尝试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 回答