首先,我已经看到了以下答案https://stackoverflow.com/a/7731051/626442,它不足以满足我的需求。
我已经编写了具有基本智能感知功能的编辑器(有关见解,请参见“通用智能感知的新实现和完整实现”)。我已经使用此编辑器实现了一些基本的SQL Server完成,但是在键入*
密钥时,我不断弹出智能提示。我想防止这种情况。目前,我正在执行以下操作:
private void TextArea_KeyDown(object sender, KeyEventArgs e)
{
if (!e.Control && e.KeyCode == Keys.Space || e.Shift)
return;
IntellisenseEngine.DisplayCompletion(this, (char)e.KeyValue);
}
我最近重新开发了控件,并且我希望在现有限制上建立何时以及何时不显示洞察窗口的限制。我想要的一个子集是:
+------------------------------+-------------------+
¦ ¦ Modifier ¦ Keys ¦ Show Completion ¦
¦---+------------+-------------¦-------------------¦
¦ 1 ¦ Shift ¦ None ¦ No ¦
¦ 2 ¦ Shift ¦ * (see note)¦ No ¦
¦ 3 ¦ None ¦ Space ¦ No ¦
¦ 4 ¦ Any ¦ Arrow Keys ¦ No ¦
+------------------------------+-------------------+
等。注意,“ *”e.KeyCode
是D8
,这显然不是键盘不变的,并且取决于语言环境,因此是不够的。
本质上,我希望我的SQL智能感知像SQL Server Management Studio(SQLMS)一样,我的问题是:
如何检测独立于键盘区域设置的星号char键。
我应该施加哪些其他关键条件来抑制智能感知窗口的弹出并使它像SQLMS一样起作用?
我尝试使用
private void TextArea_KeyPress(object sender, KeyPressEventArgs e)
{
if ((Control.ModifierKeys & Keys.Control) != Keys.Control && <Detect Space Bar> ||
(Control.ModifierKeys & Keys.Shift) == Keys.Shift && e.KeyChar == '*')
return;
IntellisenseEngine.DisplayCompletion(this, (char)e.KeyValue);
}
但是然后我有检测空格键的问题。
谢谢你的时间。
检查修改后的代码。希望它能工作
private void TextArea_KeyPress(object sender, KeyPressEventArgs e)
{
if ((Control.ModifierKeys & Keys.Contro) != Keys.Control && e.KeyChar == ' ' ||
(Control.ModifierKeys & Keys.Shift) == Keys.Shift && e.KeyChar == '*')
return;
IntellisenseEngine.DisplayCompletion(this, (char)e.KeyValue);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句