好的所以我在一个表单中有两个列表框,其中一个列表框的内容基于在另一个表单中选择的项目。基本上,listbox1是雇主列表,listbox2是所选雇主的雇员列表。当我选择没有雇员的雇主时,listbox2中没有按预期的项目。但出于某种原因,当我选择另一个没有雇员的雇主后,listbox2再次拒绝填写雇员名单。我在listbox2旁边有一个标签,它根据listbox2中的选定项自动更新其文本,当我点击listbox2中的项目时应该更新。几乎就像计算机在渲染列表框时遇到问题一样。我尝试了像listbox2.Refresh()这样的方法,但我甚至都不知道那是做什么的。所以基本上,列表框工作,它只是不显示任何东西。以下是一些相关代码:
列表框1中所选索引的更改时间代码:
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
listBox1.DataSource = Program.MEmployerList;
listBox1.DisplayMember = "Name";
Employer temps = (Employer)listBox1.SelectedItem;
listBox2.DataSource = temps.Employees();
listBox2.DisplayMember = "Name";
listBox2.Refresh();
label5.Text = temps.CompanyName() + " (" + temps.EmployerID() + ")";
label4.Text = "Phone Number: " + temps.PhoneNumber() + "\nCell Number: " + temps.CellNumber() + "\nAdress: " + temps.StreetAdress() + " - " + temps.City() + ", " + temps.State() + " " + temps.ZipCode() + "\nContact Person: " + temps.ContactPerson();
if (listBox2.Items.Count != 0 && listBox1.Items[0] != null)
{
Employee temped = (Employee)listBox2.SelectedItem;
label4.Text = label4.Text + "\n\nSelected Employee Info: " + temped.Name + "\nPhone Number: " + temped.PhoneNumber() + "\nCell Number: " + temped.CellNumber() + "\nAddress: " + temped.StreetAdress() + " - " + temped.City() + ", " + temped.State() + " " + temped.ZipCode();
}
}
以下是listbox2中所选索引更改时的代码:
private void listBox2_SelectedIndexChanged(object sender, EventArgs e)
{
listBox1.DataSource = Program.MEmployerList;
listBox1.DisplayMember = "Name";
Employer temps = (Employer)listBox1.SelectedItem;
listBox2.DataSource = temps.Employees();
listBox2.DisplayMember = "Name";
listBox2.Refresh();
label5.Text = temps.CompanyName() + " (" + temps.EmployerID() + ")";
label4.Text = "Phone Number: " + temps.PhoneNumber() + "\nCell Number: " + temps.CellNumber() + "\nAdress: " + temps.StreetAdress() + " - " + temps.City() + ", " + temps.State() + " " + temps.ZipCode() + "\nContact Person: " + temps.ContactPerson();
if (listBox2.Items.Count != 0 && listBox1.Items[0] != null)
{
Employee temped = (Employee)listBox2.SelectedItem;
label4.Text = label4.Text + "\n\nSelected Employee Info: " + temped.Name + "\nPhone Number: " + temped.PhoneNumber() + "\nCell Number: " + temped.CellNumber() + "\nAddress: " + temped.StreetAdress() + " - " + temped.City() + ", " + temped.State() + " " + temped.ZipCode();
}
}
如果有任何其他代码可以帮助解决此问题,请告诉我。
更新:请记住,程序正在注册我在listbox2中选择不同项目的事实,这些项目只是没有显示,这让我相信这是一个渲染问题。我单击listbox2中的条目应该是哪里,标签4更新。
答案 0 :(得分:1)
你最后是否错过了这个?
listBox1.DataBind()
答案 1 :(得分:0)
想出来。
我只需隐藏控件然后再次显示它以强制重新绘制并重新填充。由于列表内容正在被更改但未重新绘制,因此这似乎是一个渲染问题。
listbox1.Hide();
listbox1.Show();