0

テキストボックスでこの単純な関数に問題があります..テキストボックスを使用して、次のようにオートコンプリートするように設定されたwinformsアプリケーションがあります。

if (rbSerialNumSearch.Checked)
{
       txtSerialNum.Enabled = true;
       AutoCompleteStringCollection data = new AutoCompleteStringCollection();

       //Test data
       data.Add("555-777-333");
       data.Add("222-333-444");
       data.Add("111-222-333");

       txtSerialNum.AutoCompleteCustomSource = data;

       txtSerialNum.AutoCompleteMode = AutoCompleteMode.Suggest;

       txtSerialNum.AutoCompleteSource = AutoCompleteSource.CustomSource;
}

しかし、それは機能していません。テキストボックスに入力しても何も表示されませんか? 文字列を textbox コレクション プロパティに (デザイン モードで) 直接指定すると正常に動作しますが、プログラムで文字列を追加しようとしても何も起こりませんか?

前もって感謝します..

フォームのコード全体はこちら:

namespace GUI
{
    public partial class UpdateEquipmentForm : Form
    {
        EquipmentManager em;
        ProductManager pm;
        CategoryManager cm;

        public UpdateEquipmentForm()
        {
            InitializeComponent();
            em = new EquipmentManager();
            pm = new ProductManager();
            cm = new CategoryManager();
        }

        private void btnSearch_Click(object sender, EventArgs e)
        {
            if (rbCategorySearch.Checked)
            {
                List<Equipment> equipments = em.GetAllEquipmentInStock().Where(eq => eq.Product.Category_Id == (int)cbChooseCategory.SelectedValue).ToList();

                var resultset = (from eq in equipments
                                 select new { eq.Product.ProductNameNum, eq.Id, eq.SerialNumber, eq.InvoiceNumber, eq.CreatedDate, eq.ExpiryDate, eq.FirstUseDate }).ToList();

                dgvResult.DataSource = resultset;
            }
            if (rbProductsSearch.Checked)
            {
                List<Equipment> equipments = em.GetAllEquipmentInStock().Where(eq => eq.Product.Id == (int)cbChooseType.SelectedValue).ToList();

                var resultset = (from eq in equipments
                                 select new { eq.Product.ProductNameNum, eq.Id, eq.SerialNumber, eq.InvoiceNumber, eq.CreatedDate, eq.ExpiryDate, eq.FirstUseDate }).ToList();

                dgvResult.DataSource = resultset;
            }
            if (rbSerialNumSearch.Checked)
            {
                List<Equipment> equipments = em.GetAllEquipmentInStock();

                var resultset = (from eq in equipments
                                 where eq.SerialNumber.Contains(txtSearchEquipment.Text)
                                 select new { eq.Product.ProductNameNum, eq.Id, eq.SerialNumber, eq.InvoiceNumber, eq.CreatedDate, eq.ExpiryDate, eq.FirstUseDate }).ToList();

                dgvResult.DataSource = resultset;
            }
        }

        private void rbCategorySearch_CheckedChanged(object sender, EventArgs e)
        {
            if (rbCategorySearch.Checked)
            {
                cbChooseCategory.Enabled = true;
                cbChooseCategory.DataSource = cm.GetAllActiveCategories();
                cbChooseCategory.DisplayMember = "Name";
                cbChooseCategory.ValueMember = "Id";
            }
            else
            {
                cbChooseCategory.Enabled = false;
            }
        }

        private void rbProductsSearch_CheckedChanged(object sender, EventArgs e)
        {
            if (rbProductsSearch.Checked)
            {
                cbChooseType.Enabled = true;
                cbChooseType.DataSource = pm.GetAllActiveProducts();
                cbChooseType.DisplayMember = "ProductNameNum";
                cbChooseType.ValueMember = "Id";
            }
            else
            {
                cbChooseType.Enabled = false;
            }
        }

        private void rbSerialNumSearch_CheckedChanged(object sender, EventArgs e)
        {
            if (rbSerialNumSearch.Checked)
            {
                txtSerialNum.Enabled = true;
                AutoCompleteStringCollection data = new AutoCompleteStringCollection();

                data.Add("555-777-333");
                data.Add("222-333-444");
                data.Add("111-222-333");

                txtSerialNum.AutoCompleteCustomSource = data;

                txtSerialNum.AutoCompleteMode = AutoCompleteMode.Suggest;

                txtSerialNum.AutoCompleteSource = AutoCompleteSource.CustomSource;
            }
            else
            {
                txtSerialNum.Enabled = false;
            }
        }
    }
}
4

2 に答える 2

1

問題が見つかりました..本当に愚かです。私は間違ったテキストボックスを参照していました:-(私が参照すべきものはtxtSearchSerialと呼ばれ、txtSerialNumではありません.Doh!

みんなの努力に感謝します..ありがとう。

于 2013-06-03T08:37:43.010 に答える
0

ブレークポイントを設定できます

     txtSerialNum.Enabled = true;

このアプリケーションがこのブロックに遭遇することはないと思います。

または、このコードの後、txtSerialNum のバインディングを再設定します。

于 2013-06-03T08:21:28.427 に答える