Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在c#中的farpoint spread中使用keydown或keypress事件捕获多个按下的键?_C#_Keypress_Keydown_Farpoint Spread - Fatal编程技术网

如何在c#中的farpoint spread中使用keydown或keypress事件捕获多个按下的键?

如何在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

考虑一个包含多个列和行的Farpoint扩展控件。输入/按多个字母键时,应选择已输入单词组合的行

示例:如果键入了“a”、“n”、“u”,则应自动选择名为anusha的行。 如果键入了“j”,则应自动选择与该行相关的行 组合(杰克、简等)

当我使用下面的代码时,keyChar的值总是单个字符(a,b,c,…)。如果我尝试键入'a','n','u',它不会显示anusha。它按此顺序显示其他名称,以a(ambi)、n(nisha)和u(uma)开头。这是因为每次按下一个键时都会调用keypress事件。现在我关心的是如何使keyChar接受字符串

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键时,您可能会将
按键
更改为仅清除
存储
?如果用户单击或选择控件上的某个内容,您可能还希望清除它。