-1

使用中にアプリケーションを高速化するために、リモート SQL データベースからいくつかのデータを事前にロードし、フォームにいくつかのコンボ ボックスを用意しています。

アプリが読み込まれると、「usernames」と呼ばれる静的リスト値がプリロードされます。

両方のコンボ データソースを「ユーザー名」に設定しました。ただし、アプリを実行して最初のコンボからユーザー名を選択すると、2 番目のコンボでも同じユーザー名が選択されます。

ユーザー名を別の統計としてプリロードすることもできますが、アプリをロードするのにさらに時間がかかります。これは、私が完全に見落としている非常に愚かなことだと確信しています!

    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;

    }

よろしくお願いします

ポール

4

2 に答える 2

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 インスタンスは、2 つのコンボに対して個別の通貨管理 (基になるデータソースでの位置付け) を維持します。

于 2013-09-05T18:14:17.933 に答える
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;
    
    }
    
于 2013-09-05T18:12:38.587 に答える