c#静态列表用于两个Combo问题

时间:2013-09-05 18:06:38

标签: c# .net

我从远程sql数据库预加载一些数据以在使用期间加速应用程序,我在表单上有几个组合框。

当应用加载时,我会预加载一个名为“usernames”的静态List值。

我将两个组合数据源都设置为“usernames”。但是,当我运行应用程序并从第一个组合中选择一个用户名时,在第二个组合中也选择了相同的用户名,反之亦然?

我知道我可以将用户名预加载为不同的静态,但这需要额外的时间来加载应用程序,我确信这只是一些非常愚蠢的东西,我完全可以忽略!

    static List<string> Usernames = new List<string>();
    public Form1()
    {
        InitializeComponent();

        Usernames.Add("Paul");
        Usernames.Add("Elaine");
        Usernames.Add("Elliot");
        Usernames.Add("Matt");
        Usernames.Add("Brian");

        comboBox1.DataSource = Usernames;
        comboBox2.DataSource = Usernames;

    }

先谢谢你

2 个答案:

答案 0 :(得分:3)

尝试使用BindingSource

static List<string> Usernames = new List<string>();
public Form1()
{
    InitializeComponent();

    Usernames.Add("Paul");
    Usernames.Add("Elaine");
    Usernames.Add("Elliot");
    Usernames.Add("Matt");
    Usernames.Add("Brian");

    BindingSource bs1 = new BindingSource();
    bs1.DataSource = Usernames;
    comboBox1.DataSource = bs1;
    BindingSource bs2 = new BindingSource();
    bs2.DataSource = Usernames;
    comboBox2.DataSource = bs2;
}

BindingSource实例为两个组合维护单独的货币管理(定位在基础数据源上)

答案 1 :(得分:0)

  

我知道我可以将用户名预加载为不同的静态,但这需要额外的时间来加载应用

这不会增加很多时间。主要问题是每次加载页面时都要向静态列表添加值。您只需要添加一次。

您有几个选择:

  1. Page s 静态构造函数中加载名称:

    static List<string> Usernames = new List<string>();
    
    public static Form1()
    {
        Usernames.Add("Paul");
        Usernames.Add("Elaine");
        Usernames.Add("Elliot");
        Usernames.Add("Matt");
        Usernames.Add("Brian");
    }
    
    public Form1()
    {
        InitializeComponent();
    
        comboBox1.DataSource = Usernames;
        comboBox2.DataSource = Usernames;
    
    }
    
  2. 使列表非静态并每次加载:

    List<string> Usernames = new List<string>();
    public Form1()
    {
        InitializeComponent();
    
        Usernames.Add("Paul");
        Usernames.Add("Elaine");
        Usernames.Add("Elliot");
        Usernames.Add("Matt");
        Usernames.Add("Brian");
    
        comboBox1.DataSource = Usernames;
        comboBox2.DataSource = Usernames;
    
    }