この質問に関連: Linq を使用して辞書から特定のキーを除外し、新しい辞書を返す
辞書を使用するオートコンプリートのコントロールを取得しました。シナリオでは、(コード エディターとして機能する) RichTextBox 内のすべての単語が、オートコンプリートのリストに自動的に追加されます。RichTextBox に「asdasdasd」という単語を入力すると、オートコンプリートに「asdasdasd」という単語が自動的に追加されます。
このコードを使用して:
private IEnumerable<AutocompleteItem> BuildList()
{
//find all words of the text
var words = new Dictionary<string, string>();
var keysToBeFiltered = new HashSet<string> { "Do", "Not" };
var filter = words.Where(p => !keysToBeFiltered.Contains(p.Key))
.ToDictionary(p => p.Key, p => p.Value);
foreach (Match m in Regex.Matches(rtb_JS.Text, @"\b\w+\b"))
filter[m.Value] = m.Value;
//foreach (Match m in Regex.Matches(rtb_JS.Text, @"^(\w+)([=<>!:]+)(\w+)$"))
//filter[m.Value] = m.Value;
foreach (var word in filter.Keys)
{
yield return new AutocompleteItem(word);
}
}
上記のコードを使用すると、オートコンプリートに "Do" と "Not" という単語が含まれるようになりました。また、フォームが読み込まれると、常にそこにある必要がある特定のデフォルト スクリプトが表示されます。だから変えられない。
これを修正するために私がしなければならない2つの可能な解決策: 1. フォームの読み込み時に、デフォルトのスクリプトで使用されるデフォルトの単語をオートコンプリートに追加できないようにします (リストに追加できない単語のリストを作成します) 2. 次の行を検出します「//」または「/*」にコメントを付けて、そこからの単語が辞書に追加されないようにしました。
あなたが私を助けてくれることを願っています。質問を修正する必要があるかどうか教えてください。できるだけ早く修正/更新します。
メイン_Q:
リッチテキストボックス (// または /* で始まる行) からコメント付きの単語をオートコンプリートに追加しないようにする方法