2013-06-03 139 views
0

具有一個文本框,這個簡單的功能問題,林..我有一個WinForms應用程序,用一個文本框,設置自動完成這樣的:文本框自動完成功能在C#WinForm應用程序不會自動填充

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; 
} 

但不管用。當我輸入文本框時什麼也不顯示?如果我直接指定字符串到文本集合屬性(在設計模式),它工作正常,但是當我嘗試以編程方式添加字符串,沒有事情發生?

在此先感謝..

FOR FORM整個代碼的位置:

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; 
      } 
     } 
    } 
} 
+0

你在哪裏執行該代碼?和你執行它是? – EaterOfCode

+0

該代碼是在一個單選按鈕checkedchanged事件中執行的。我有三個搜索字符串,它們是由單選按鈕選擇的,這就是其中的一個 – MartinChristensen

+0

如果(rbSerialNumSearch.Checked){}? –

回答

0

您可以將斷點設置爲

 txtSerialNum.Enabled = true; 

我覺得這個應用程序就運行到該塊。

或者在此代碼之後,您將重新設置txtSerialNum的綁定。

+0

嘗試調試。在選擇單選按鈕時執行代碼很好: -/ – MartinChristensen

1

發現問題..真是愚蠢的我。我引用了錯誤的文本:-(一個我應該參照被稱爲txtSearchSerial而不是txtSerialNum。衛生署!

欣賞的努力guys..thanks。

+0

這很有趣:)沒錯每個人都會犯錯誤 – EaterOfCode