我正在使用一些用于制作 Code Editor 的替换代码。
就像这样的场景,当我在RichTextbox
(用作代码编辑器)示例中输入关键字时:我输入"Ac"
(RichTextbox
rtb)然后假设ComboBox
(声明为 lb)会出现。
就像里面有字符串的上下文提示/智能感知:
public string[] Accep = { "AcceptRejectRule" };
public string[] Acces = { "AccessibleEvents" };
然后我使用KeyEvent
args 代码如果我在最后一个单词中选择后按 EnterComboBox
将替换为我之前键入的单词,就像当我键入
所有以in"Ac"
开头的字符串时一样:"Ac"
ComboBox
--- 这适用于在richtextbox 中输入的每个单词
if (token == "letterA" || token.StartsWith("Ac") || token.StartsWith("ac") || token.StartsWith("AC"))
{
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.ac)
{
lb.Items.Add(str);
lb.SelectedIndex = lb.FindStringExact(str);
}
}
--- 这是一个KeyEvent
参数
if (e.KeyCode == Keys.Enter)
{
string Slb = lb.SelectedText.ToString();
var trimmed = RemoveFromStart(Slb, new String[] { "Ac", "Accep", "Acces" });
rtb.SelectedText = trimmed;
lb.Hide();
}
然后,当我在ComboBox
示例中选择时"Ac"
,我想在ComboBox
( "AcceptRejectRule"
, "AccessibleEvents"
) 中选择 AccessibleEvent,当我按 Enter 时,输出将是"AccessibleEvents"
因为它被声明为"Ac
“将在替换代码上方和此参数内部时删除:
//Replacing Parameter:
public string RemoveFromStart(string s, IEnumerable<string> strings)
{
foreach (var x in strings.Where(s.StartsWith))
{
return s.Remove(0, x.Length);
}
return s;
}
但是当我键入时,"Acces"
我选择"AccessibleEvents"
输出将是:
"AccescessibleEvents"
而不是“AccessibleEvent”,因为“Ac”是我在RemoveFromStart
方法中使用的最短字符串。
现在我的问题是如何在代码中创建每个字符串:
var trimmed = RemoveFromStart(Slb, new String[] { "Ac", "Accep", "Acces" });
唯一的我可以让"Accep"
即使“也删除"Ac
”被声明为最短的字符串。
非常感谢您,希望您能帮助我:(。真的非常需要帮助。