私はエディターで作業しており、インテリセンスが表示された後に最後のコメントを置き換えたいと考えています。
さらにシナリオはこちら
コードエディターとして機能する richtextbox(rtb) と、インテリセンスとして機能する非表示のコンボボックス (lb) を取得しました。リッチテキストボックス(rtb)から単語を入力するたびに、サンプル「as」と入力すると、コンボボックスが(インテリセンスのように)「as」から始まるキーワードで表示されます。
コンボボックスからアイテムを選択した後を除いて、すべての機能が機能するようになりました
sample string(combo box items): asd, asdf, asdfg .
次に、リッチテキストボックスのように入力し、コンボボックスから「asd」を選択するとします。Enterキーを押すと、出力は次のようになります。
asdとして
それ以外の:
として(のみ)
さらに、私のkeyeventsコードは次のとおりです。
void lb_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Escape)
{
lb.Visible = false;
lb.Items.Clear();
}
if (e.KeyCode == Keys.Enter)
{
int start = 0, end = 0;
String line = rtb.Text.Substring(start, start - end);
int index = start;
string comment = line.Substring(index);
rtb.SelectedText = lb.SelectedText.ToString();
}
}
注:私はただ書いています:
rtb.SelectedText = コメント + " " + lb.SelectedText.ToString();
今のところ、他の関数を確認しますが、その行は私が修正したいものでした。また、私も試してみます:
rtb.SelectedText = comment - lb.SelectedText.ToString();
しかし、演算子「-」はタイプ「文字列」および「文字列」のオペランドには適用できないと書かれています
事前に助けてくれて本当にありがとう。
パラメータ:
if (token == "letterA" || token.StartsWith("Ab") || token.StartsWith("ab") || token.StartsWith("AB"))
{
int length = line.Length - (index - start);
string commentText = rtb.Text.Substring(index, length);
rtb.SelectionStart = index;
rtb.SelectionLength = length;
lb.Visible = true;
KeyWord keywordsHint = new KeyWord();
foreach (string str in keywordsHint.ab)
{
lb.Items.Add(str);
lb.SelectedIndex = lb.FindStringExact(str);
}
//token.Replace(lb.SelectedText,"");
}