【发布时间】:2014-01-11 22:27:11
【问题描述】:
早安,
我对文本框的自动完成有疑问。我有一个自定义控件:
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 窗体。任何帮助将不胜感激。
PS 我不从 TextBox 继承的原因是因为我无法在不更改字体大小或将其更改为多行文本框的情况下更改文本框高度。
谢谢
【问题讨论】:
标签: c# winforms autocomplete textbox