嗨,在我的组合框中,我想让不同的国家出现在其中。但我试着尝试,永远不会让它出现。这就是我的表现:
class Countries
{
public string Name { get; set; }
public IList<Countries> Cities { get; set; }
public Countries()
{
}
public Countries(string _name)
{
Cities = new List<Countries>();
Name = _name;
List<Countries> countries = new List<Countries> { new Countries("UK"),
new Countries("Australia"),
new Countries("France") };
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
CustomerFiles.Countries country = new CustomerFiles.Countries();
cbCountry.DataSource = country.Cities;
cbCountry.DisplayMember = country.Name;
}
我能做什么我仍然没有在组合框中找到任何国家?!?
答案 0 :(得分:2)
您需要调用DataBind方法
cbCountry.DataSource = country.Cities;
cbCountry.DisplayMember = country.Name;
cbCountry.DataBind(); // method is absent in WinForms
更新:您的问题不在于数据绑定 - 您可以在Form构造函数中填写 cbCountry.DataSource 。您的Countries.Cities属性为空。
答案 1 :(得分:2)
您提供的代码没有多大意义,使用包含相同类的列表然后具有name属性的类Country。 (我有点惊讶所有编译)
我将给出两个在WinForms中为组合框提供数据的基本示例 - 第一个简单地提供字符串列表,第二个数据绑定对象列表(我怀疑是你的目标)。
下面是一个Form类,它有一个ComboBox成员。我创建一个List并提供随后出现在ComboBox中的国家/地区名称:
public partial class Form1 : Form
{
private List<string> countries_;
public Form1()
{
InitializeComponent();
countries_ = new List<string> { "UK",
"Australia",
"France" };
comboBox1.DataSource = countries;
}
}
下一个示例非常相似,但现在我绑定到类型为Country的列表,其中Country是具有id(可能来自数据库)和名称的类。我将显示成员设置为告诉组合框向用户显示哪个类属性,并将值成员设置为id属性以允许我设置SelecteValue。
public partial class Form1 : Form
{
bool click = false;
public Form1()
{
InitializeComponent();
List<Country> countries = new List<Country> { new Country{ CountryId = 1, Name = "UK"},
new Country{ CountryId = 2, Name = "Australia"},
new Country{ CountryId = 3, Name = "France"} };
comboBox1.DataSource = countries;
comboBox1.DisplayMember = "Name";
comboBox1.ValueMember = "CountryId";
comboBox1.SelectedValue = 2;
}
}
public class Country
{
public int CountryId { get; set; }
public string Name { get; set; }
}
答案 2 :(得分:0)
您在SelectedIndexChanged事件中调用了国家/地区的default constructor
个类。所以,这种行为对我来说似乎很自然,因为城市列表不包含任何项目。您是否需要致电parameterized constructor
填写您的收藏品?