2014-01-11 53 views
0

美好的一天,自定義控件文本框自動完成

我在自動完成文本框時遇到問題。我有一個自定義控制:

public partial class CustomTextBox : UserControl

然後在此控制我添加一個文本框:

public CustomTextBox() 
    { 
     InitializeComponent(); 

     TextBox textBox = new TextBox(); 

     textBox.AutoCompleteMode = AutoCompleteMode.SuggestAppend; 
     textBox.AutoCompleteSource = AutoCompleteSource.CustomSource; 
     textBox.AutoCompleteCustomSource = aclist; 

     textBox.Multiline = false; 

     textBox.BorderStyle = BorderStyle.None; 

     this.Controls.Add(textBox); 

    } 

現在,如果我在一個表單中添加文本框,並設置一個AutoCompleteStringCollection到我的控件的屬性,我用於自定義自動完成列表,文本框的自動完成在運行時不起作用。

但是,如果我在同一個地方添加一個測試AutoCompleteStringCollection我創造它的工作原理控制:

public CustomTextBox() 
    { 
     InitializeComponent(); 

     TextBox textBox = new TextBox(); 

     textBox.AutoCompleteMode = AutoCompleteMode.SuggestAppend; 
     textBox.AutoCompleteSource = AutoCompleteSource.CustomSource; 

     AutoCompleteStringCollection list = new AutoCompleteStringCollection(); 
     list.Add("Test"); 

     textBox.AutoCompleteCustomSource = list; 

     textBox.Multiline = false; 

     textBox.BorderStyle = BorderStyle.None; 

     this.Controls.Add(textBox); 

    } 

不知道如果我錯過了什麼。如果您需要更多代碼來幫助回答問題,請告訴我。

我正在使用Windows窗體。任何幫助將不勝感激。

P.S我沒有從TextBox繼承的原因是因爲我無法在不更改字體大小或將其更改爲多行文本框的情況下更改文本框高度。

謝謝

回答

0

所以我想出了這個問題,如果有人很好奇。在自定義文本框中分配autocompletecustomsource的地方,如果我將其從公共CustomTextBox(){...}中取出並打開它,例如我繪製控件的方法,它可以很好地工作。就在InitializeComponent()下方,該列表仍顯示爲空,但僅在繪製方法時分配值