C#和组合框未加载列表时出现问题

C#和组合框未加载列表时出现问题,c#,list,combobox,C#,List,Combobox,我正在使用Combobox构建一个列表,当从Combobox列表中选择一个客户端时,它将加载一个特定的URL。问题是列表为空。 下面是代码,但我不知道我遗漏了什么,但这可能是简单的疏忽,因为这是我第一次构建这样的组合框 public partial class Form1 : Form { List<MyClient> clients; public Form1() { InitializeComponent(); client

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

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; }
}
公共部分类表单1:表单
{
列出客户名单;
公共表格1()
{
初始化组件();
clients=新列表();
添加(新的MyClient{ClientName=“Client 1”,urldaddress=@)http://www.google.com" });
BindBigClientsList();
}
私有void BindBigClientsList()
{
BigClientsList.DataSource=客户端;
BigClientsList.DisplayMember=“ClientName”;
BigClientsList.ValueMember=“UrlAddress”;
}
private void BigClientsList\u SelectedIndexChanged(对象发送方,事件参数e)
{
MyClient c=BigClientsList。选择EdItem作为MyClient;
如果(c!=null)
{
字符串url=c.ClientName;
进程启动(url);
}
}
}
类MyClient
{
公共字符串ClientName{get;set;}
公共字符串URL地址{get;set;}
}

您缺少最后一行:DataBind

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

您缺少最后一行:DataBind

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

您的构造函数应该如下所示

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);
        } 
    }
public Form1()
{ 
初始化组件();
列表客户端=新列表();
添加(新的MyClient{ClientName=“Client 1”,urldaddress=@)http://www.google.com" });
foreach(客户端中的MyClient客户端)
{
BigClients.Items.Add(客户端);
} 
}
这增加了两件事:

  • 将对象添加到组合框中。如果不添加对象,该项将如何显示在组合框中
  • 将代码放在InitializeComponent()语句之后。否则,当您尝试将MyClient对象添加到ComboBox时,它将抛出NullReferenceException

您的构造函数应该如下所示

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);
        } 
    }
public Form1()
{ 
初始化组件();
列表客户端=新列表();
添加(新的MyClient{ClientName=“Client 1”,urldaddress=@)http://www.google.com" });
foreach(客户端中的MyClient客户端)
{
BigClients.Items.Add(客户端);
} 
}
这增加了两件事:

  • 将对象添加到组合框中。如果不添加对象,该项将如何显示在组合框中
  • 将代码放在InitializeComponent()语句之后。否则,当您尝试将MyClient对象添加到ComboBox时,它将抛出NullReferenceException

您正在创建:列出客户机并对其进行填充,但除此之外,您不会对其进行任何操作。稍后将进行设置:BigClientsList.DataSource=ClientSize;但是什么是
ClientSize
?以加载事件的形式调用BindBigClientsList函数对不起,这是我的错误。不知道为什么我要写“=ClientSize”;。应该是“客户”;。仍然无法工作,在您显示的代码中,客户端是一个局部变量,当您退出构造函数时,客户端将不再存在。也许你打算初始化一个成员变量?我相信是的,但这是我第一次尝试构建一个如此复杂的组合框,所以我知道我在某个地方搞错了。说到C#,我是一个傻瓜,所以任何方向都会受到赞赏。你在创建:列出客户并填充,但除此之外,你什么都不做。稍后将进行设置:BigClientsList.DataSource=ClientSize;但是什么是
ClientSize
?以加载事件的形式调用BindBigClientsList函数对不起,这是我的错误。不知道为什么我要写“=ClientSize”;。应该是“客户”;。仍然无法工作,在您显示的代码中,客户端是一个局部变量,当您退出构造函数时,客户端将不再存在。也许你打算初始化一个成员变量?我相信是的,但这是我第一次尝试构建一个如此复杂的组合框,所以我知道我在某个地方搞错了。说到C#我是个笨蛋,所以任何方向都会被感激的。这个答案对我来说似乎没问题。。。我不知道为什么有人投了反对票。这个答案在我看来没问题。。。我不知道为什么有人否决了它。