当我输入文本框的任何部分时,自动填充显示?

时间:2017-01-06 17:06:21

标签: c#

当我想要输入“march”或“;”之后的任何单词时,我尝试制作自动完成节目,图片:

enter image description here

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;

或喜欢当我想在提出这个问题时添加标签。

1 个答案:

答案 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一样。然后重置文本框文本,以便他们可以开始键入下一个标记。