0

私の Windows アプリケーションでは、List_box で Text_box を使用しています。キープレスイベントでイベントが発生すると、データが取得され、リストボックスにリストされます

私の問題は次のとおりです。データベースにヒットするキープレスイベントごとに、アプリケーションが遅くなりました。

キープレスイベントでデータベースのラウンドトリップを減らすにはどうすればよいですか?


private void txtVehicleNo_TextChanged(object sender, EventArgs e)
    {
        try
        {
            lstVehicleNo.Visible = true;
            if (!string.IsNullOrEmpty(txtVehicleNo.Text))
            {
                dsResult = oclsBal.GetVhNo(txtVehicleNo.Text);
                if (dsResult.Tables.Count > 0)
                {

                    DataRow dr = dsResult.Tables[0].NewRow();
                    lstVehicleNo.DataSource = dsResult.Tables[0];
                    lstVehicleNo.DisplayMember = "VehicleNo";
                    lstVehicleNo.ValueMember = "VehicleId";
                    lstVehicleNo.SelectedIndex = 0;
                    dsResult.Tables.Clear();
                }

            }
            if (lstVehicleNo.Items.Count == 0)
            {
                lstVehicleNo.Visible = false;
            }
            if (txtVehicleNo.Text.Length == 0)
            {
                lstVehicleNo.Visible = false;
            }
            if (lstVehicleNo.Items.Count == 1)
            {
                if (txtVehicleNo.Text.ToUpper() == lstVehicleNo.Items[0].ToString().ToUpper())
                    lstVehicleNo.Visible = false;
            }

        }
        catch (Exception ex)
        {
            throw ex;
       }

}

4

2 に答える 2

1

キーが押された後、タイムアウト後にのみリスト データを取得します。キーが押されたときは、このタイムアウトをリセットします。これは、ユーザーが入力を停止したときに、妥当な十分な一時停止がある場合にのみデータを取得することを意味します。

または、予想されるリスト項目をプリフェッチするオートコンプリート スタイル ボックスを使用します。

于 2013-07-23T05:24:08.743 に答える
0

最初にキーを押すと、その文字で始まるすべてのレコードが取得され、キャッシュまたはローカル メモリに保持されます。さらにキーを押すと、このキャッシュが保持されます。ローカル ストレージにデータのサブセットがあるため、パフォーマンスが向上するはずです。

于 2013-07-23T05:41:00.913 に答える