1

我正在使用组合框构建一个列表,当从组合列表中选择一个客户端时,它会加载一个特定的 URL。问题是列表是空白的。
下面是代码,但我看不到我缺少什么,但这可能是简单的疏忽,因为这是我第一次构建这样的 Combobox。

public partial class Form1 : Form
{
    List<MyClient> clients;
    public Form1()
    {
        InitializeComponent();
        clients = new List<MyClient>();
        clients.Add(new MyClient { ClientName = "Client 1", UrlAddress = @"http://www.google.com" });
        BindBigClientsList();
    }

    private void BindBigClientsList()
    {
        BigClientsList.DataSource = clients;
        BigClientsList.DisplayMember = "ClientName";
        BigClientsList.ValueMember = "UrlAddress";
    }

    private void BigClientsList_SelectedIndexChanged(object sender, EventArgs e)
    {
        MyClient c = BigClientsList.SelectedItem as MyClient;
        if (c != null)
        {
            string url = c.ClientName;
            Process.Start(url);
        }
    }
}
class MyClient
{
    public string ClientName { get; set; }
    public string UrlAddress { get; set; }
}
4

2 回答 2

2

你错过了最后一行:DataBind

private void BindBigClientsList()
{
    BigClientsList.DataSource = ClientSize;
    BigClientsList.DisplayMember = "ClientName";
    BigClientsList.ValueMember = "UrlAddress";
    BigClientsList.DataBind;
}
于 2012-09-12T20:37:38.737 回答
1

你的构造函数应该是这样的

public Form1() 
    { 
        InitializeComponent(); 
        List<MyClient> clients = new List<MyClient>(); 
        clients.Add(new MyClient { ClientName = "Client 1", UrlAddress = @"http://www.google.com" });
        foreach(MyClient client in clients)
        {
            BigClients.Items.Add(client);
        } 
    }

这增加了两件事:

  • 将对象添加到组合框。没有它,该项目应该如何出现在 ComboBox 中?
  • 将代码放在 InitializeComponent() 语句之后。否则,当您尝试将 MyClient 对象添加到 ComboBox 时,它将引发 NullReferenceException。
于 2012-09-12T21:45:13.420 回答