【发布时间】:2016-09-13 03:09:02
【问题描述】:
我想创建一个自动完成功能,例如:如果我输入 AWP,它会显示所有 AWP 命令,如果我双击一个命令,它会将命令插入到 Richtextbox 中,另一个函数会将命令转换为 ID
唯一的问题是,如果我输入 Skin.AWP 然后 AWP 它不会像它应该显示的那样自动完成命令,如果我按 enter 并输入 AWP 也是如此
我的代码:
public List<string> autoCompleteSkinsList = new List<string>();
public ConfigMaker()
{
InitializeComponent();
autoCompleteSkinsList.Add("AWP_ASIIMOV");
autoCompleteSkinsList.Add("AWP_BOOM");
autoCompleteSkinsList.Add("AWP_Dragon Lore");
autoCompleteSkinsList.Add("AWP_Forest DDPAT");
autoCompleteSkinsList.Add("AWP_Pink DDPAT");
autoCompleteSkinsList.Add("AWP_Snake Camo");
autoCompleteSkinsList.Add("AWP_Lightning Strike");
autoCompleteSkinsList.Add("AWP_Safari Mesh");
autoCompleteSkinsList.Add("AWP_Corticera");
autoCompleteSkinsList.Add("AWP_Redline");
autoCompleteSkinsList.Add("AWP_Man-o'-war");
autoCompleteSkinsList.Add("AWP_Electric Hive");
autoCompleteSkinsList.Add("AWP_Pit Viper");
autoCompleteSkinsList.Add("AWP_Worm God");
autoCompleteSkinsList.Add("AWP_Medusa");
autoCompleteSkinsList.Add("AWP_Sun in Leo");
autoCompleteSkinsList.Add("AWP_Hyper Beast");
}
public void TextBox_TextChanged(object sender, EventArgs e)
{
TextBox.Rtf = TextBox.Rtf.Replace("AWP_ASIIMOV", "279");
TextBox.Rtf = TextBox.Rtf.Replace("AWP_BOOM", "174");
TextBox.Rtf = TextBox.Rtf.Replace("AWP_Dragon Lore", "344");
TextBox.Rtf = TextBox.Rtf.Replace("AWP_Forest DDPAT", "5");
TextBox.Rtf = TextBox.Rtf.Replace("AWP_Pink DDPAT", "84");
TextBox.Rtf = TextBox.Rtf.Replace("AWP_Snake Camo", "30");
TextBox.Rtf = TextBox.Rtf.Replace("AWP_Lightning Strike", "51");
TextBox.Rtf = TextBox.Rtf.Replace("AWP_Safari Mesh", "72");
TextBox.Rtf = TextBox.Rtf.Replace("AWP_Corticera", "181");
TextBox.Rtf = TextBox.Rtf.Replace("AWP_Redline", "259");
TextBox.Rtf = TextBox.Rtf.Replace("AWP_Man-o'-war", "395");
TextBox.Rtf = TextBox.Rtf.Replace("AWP_Electric Hive", "227");
TextBox.Rtf = TextBox.Rtf.Replace("AWP_Pit Viper", "251");
TextBox.Rtf = TextBox.Rtf.Replace("AWP_Worm God", "424");
TextBox.Rtf = TextBox.Rtf.Replace("AWP_Medusa", "446");
TextBox.Rtf = TextBox.Rtf.Replace("AWP_Sun in Leo", "451");
TextBox.Rtf = TextBox.Rtf.Replace("AWP_Hyper Beast", "475");
listBox2.Items.Clear();
if (TextBox.Text.Length == 0)
{
return;
}
foreach (String SkinList in autoCompleteSkinsList)
{
if (SkinList.Contains(TextBox.Text))
{
listBox2.Items.Add(SkinList);
}
}
}
public void listBox2_DoubleClick(object sender, EventArgs e)
{
TextBox.Text = listBox2.Items[listBox2.SelectedIndex].ToString();
}
示例图片: http://imgur.com/a/MRBuA
【问题讨论】:
-
所以您希望根据在文本框中输入的内容来填充列表框?如:用户输入 AWP 并且列表框被 AWP 相关项填满?
-
没错,如果用户然后双击列表框中的项目,它会将项目插入文本框
-
嗯,简短的回答是您正在从列表中的文本框中查找字符串...因此,如果您键入“Skin.AWP”,它将不会在列表中找到它。如果你按回车,同样的事情。列表中的所有内容都以“AWP”开头,并且不包含任何带有“SKIN.AWP”的内容。您应该重写代码以在文本中找到“AWP”,然后在列表框中相应地显示选项
标签: c# winforms autocomplete