如何在c#中的farpoint spread中使用keydown或keypress事件捕获多个按下的键?
考虑一个包含多个列和行的Farpoint扩展控件。输入/按多个字母键时,应选择已输入单词组合的行 示例:如果键入了“a”、“n”、“u”,则应自动选择名为anusha的行。 如果键入了“j”,则应自动选择与该行相关的行 组合(杰克、简等) 当我使用下面的代码时,keyChar的值总是单个字符(a,b,c,…)。如果我尝试键入'a','n','u',它不会显示anusha。它按此顺序显示其他名称,以a(ambi)、n(nisha)和u(uma)开头。这是因为每次按下一个键时都会调用keypress事件。现在我关心的是如何使keyChar接受字符串如何在c#中的farpoint spread中使用keydown或keypress事件捕获多个按下的键?,c#,keypress,keydown,farpoint-spread,C#,Keypress,Keydown,Farpoint Spread,考虑一个包含多个列和行的Farpoint扩展控件。输入/按多个字母键时,应选择已输入单词组合的行 示例:如果键入了“a”、“n”、“u”,则应自动选择名为anusha的行。 如果键入了“j”,则应自动选择与该行相关的行 组合(杰克、简等) 当我使用下面的代码时,keyChar的值总是单个字符(a,b,c,…)。如果我尝试键入'a','n','u',它不会显示anusha。它按此顺序显示其他名称,以a(ambi)、n(nisha)和u(uma)开头。这是因为每次按下一个键时都会调用keypress
private void Keypress(object sender,KeyPressEventArgs e)
{
If(e.KeyChar != (char)Keys.Enter && e.KeyChar != (char)Keys.Escape)
{
ABCFunction.SpreadKeyAction(SftTaskTree, e.KeyChar.ToString(), Name_Col_Pos);
}
}
我尝试使用变量来存储和暂停特定时间的线程。即使这样也不起作用,因为每次它进入“if”循环并使存储的变量为空
private void Keypress(object sender,KeyPressEventArgs e)
{
store = store + e.KeyChar.ToString();
Thread.Sleep(1500);
If(e.KeyChar != (char)Keys.Enter && e.KeyChar != (char)Keys.Escape)
{
ABCFunction.SpreadKeyAction(SftTaskTree, store , Name_Col_Pos);
store = String.Empty;
}
}
请大家帮帮忙……您的第二个示例仍然将按下的字符传递给控件,而不是您的
store
变量?事实上,当我在1.5秒后为每个字符按“a”、“n”、“u”(即-“a”)“如果”循环被迭代,并且当store=String.Empty行被点击时,则store=''“。当我注释store=String.Empty行时,它会第一次存储'anu',当你键入任何其他单词'sam'时,它会存储'anusam'。我的意思是你用e.KeyChar.ToString()
调用ABCFunction.SpreadKeyAction
,而不是store
,这是我以为你会想做的事?但是我不熟悉你使用的控件,所以我可能错了!很抱歉。这是一个错误。现在我编辑了我的问题。好吧,这更有意义。因此,我认为您必须决定何时清除存储
。如果按下escape键,在这种情况下,当用户按下escape键时,您可能会将按键
更改为仅清除存储
?如果用户单击或选择控件上的某个内容,您可能还希望清除它。