当我想要输入“march”或“;”之后的任何单词时,我尝试制作自动完成节目,图片:
var source = new AutoCompleteStringCollection();
source.AddRange(new string[]
{
"January",
"February",
"March",
"April",
"May",
"June",
"July",
"August",
"September",
"October",
"November",
"December"
});
textBox1.AutoCompleteMode = AutoCompleteMode.Suggest;
textBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;
textBox1.AutoCompleteCustomSource = source;
或喜欢当我想在提出这个问题时添加标签。
答案 0 :(得分:1)
您必须使用标准文本框获得创意。当你在Stack Overflow上键入标签时,每次你完成一个,它会弹出自己的小盒子......你可以为textBox1_TextChanged创建一个事件处理程序来检查;字符,然后假设如果他们键入一个,他们完成前一个标记。它看起来像这样:
private void textBox1_TextChanged(object sender, EventArgs e)
{
if (textBox1.TextLength > 0)
{
if (textBox1.Text[textBox1.TextLength - 1] == ';')
{
MyCustomTagControl tag = new MyCustomTagControl(textBox1.Text);
MyLayoutControl.Controls.Add(tag);
textBox1.Text = "";
}
}
}
在这里,我们检查以确保至少有一个角色。然后我们检查最后一个字符,看它是否是分号。如果是,则将整个文本字符串传递给自定义标记的构造函数(可能只是一个带有标签的小面板和用于删除不需要的标记的“X”)并将标记添加到某种布局控件中像FlowLayoutPanel一样。然后重置文本框文本,以便他们可以开始键入下一个标记。