2

次のコードを使用して、コンボボックスにさらに機能を追加しています。クラス コンテキストでコンボ ボックスを作成するためのより良い方法はありますか? レコードの数が数千の場合、おそらくこれはベスト プラクティスではないことを認識しています。

private void Form1_Load(object sender, EventArgs e)
{
    Book myBook = new Book;
    myBook.Connect();
    comboBox1.DataSource=myBook.IDs();
}

class Book
{
    OleDbCommand Comm;
    OleDbConnection Conn;
    OleDbDataReader Reader;
    string queryString;

    public void Connect()
    {
        Conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\Book.accdb");
    }

    public List<string> IDs()
    {
        string singleID = null;
        List<string> IDs = new List<string>();
        queryString = "Select bID from Books";
        Comm = new OleDbCommand(queryString, Conn);
        Reader = Comm.ExecuteReader();
        while (Reader.Read())
        {
            singleID = Reader[0].ToString();
            IDs.Add(singleID);
        }
        Conn.Close();
        Reader.Close();
        return IDs;
    }
}
4

1 に答える 1

2

コンボ ボックスに入力するために使用している方法は、技術的に正しいようです。膨大な数のアイテムを含むコンボ ボックスが生成される場合、実際にはうまく機能しない可能性がありますが、それは「UI デザイン」の問題です (つまり、「単一のコンボ ボックスを使用している」など)。ユーザーに選択させるための正しい選択は?" ) は、"コードの設計" (つまり、"コンボ ボックスを使用しているので、項目をそこに入れるための最良の方法は?" ) ではありません。

于 2013-04-16T17:32:13.013 に答える