2016-09-12 41 views
0

例のオートコンプリート機能を作りたい:AWPを入力するとすべてのAWPコマンドが表示され、1つをダブルクリックするとコマンドがrichtextboxに挿入され、別の機能がコマンドをIDに変換するC#オートコンプリート機能

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(); 
    } 

例:

唯一の問題は、私はSkin.AWPを入力し、AWP場合、私は

マイコードAWPを入力し、入力キーを押した場合、それは同じ、それが必要のようなオートコンプリートのコマンドが表示されないということです画像: 上記の私のコメントを1として

+0

をので、あなたはリストボックスには、テキストボックスに入力されたされているものに応じて、何かが移入されるようにしたいですか? など: ユーザタイプAWPとリストボックスはAWP関連アイテムで埋められますか? –

+0

正確に、ユーザーがリストボックス内の項目をダブルクリックすると、その項目がテキストボックスに挿入されます – RaINi

+0

よくある質問は、リスト内のテキストボックスから文字列を探しているということです。 "Skin.AWP"はリスト内でそれを見つけられません。 Enterを押すと同じことが起こります。リスト内のすべては "AWP"で始まり、 "SKIN.AWP"とは何も含まれていません。テキスト内の「AWP」を検索し、それに応じてリストボックスにオプションを表示するコードを書き直すべきです –

答えて

0

、私が代わりにこのような何かをするだろう:

 private void TextBox_TextChanged(object sender, EventArgs e) 
    { 
     listBox2.Items.Clear(); 
     if (TextBox.Text.Length == 0) 
     { 
      return; 
     } 

     if (TextBox.Text.Contains("AWP")) 
     { 
      listBox2.DataSource = autoCompleteSkinsList; 
      listBox2.Refresh(); 
     }    
    } 
    public void listBox2_DoubleClick(object sender, EventArgs e) 
    { 
     TextBox.Text = listBox2.Items[listBox2.SelectedIndex].ToString(); 
    } 
+0

別の方法が見つかりましたが、 – RaINi

関連する問題