在VS 2012、WinForms、C#中工作。。。
我有一个ListBox,我想根据在ComboBox中选择的值来填充它。我已经测试了我的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重新加载它。我觉得我离它越来越近了,但仍然不是正确的事件。
试试这个:
private void cb_Session_SelectedValueChanged(object sender, EventArgs e)
{
if(cb_Session.SelectedValue>-1)
{
listbox_Sessions.Visible = true;
LoadSessionListbox();
}
}
想明白了!!
我最终在SelectedValueChanged例程中添加了一个简单的if语句,它修复了所有问题!
private void cb_Sessions_SelectedValueChanged(object sender, EventArgs e)
{
listBox_Sessions.Visible = true;
if (cb_Sessions.SelectedValue != null)
LoadSessionListbox();
}
现在效果很好。
在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
}