我正在检查文本框的键码,并且我希望在用户按下时执行某个任务Enter
。
它一直运行良好,但我现在尝试执行的任务通常是使用鼠标单击完成的。因此,在该任务(a FolderBrowserDialog
)的 OK 上,它一直调用对话框控件。
奇怪的是,即使调试器显示我进入 if 分支,因为它显示 e {KeyData = LButton|MButton|Back}
,但KeyValue
仍然是 13...
我认为可能是文本框记住了它的最后一个条目......真的吗?
在我的故障排除中,我添加了一个布尔变量,所以我只在它为真时才进入 FolderBrowser,我试图在浏览之后从文本框中添加和删除一个空格,甚至清除文本框......每次尝试似乎都情况更糟。
似乎我处于一个准无限循环中 - 但它会在很多“ok”之后消失,并且逐步通过,我发现对于我在文本框中输入的每个字母,我都会花费 4 到 5 轮校验键。我不明白为什么......或者如何解决它。
我添加了一个“e.Handled”,这对我没有好处。
这是代码:
private void txtDir_TextChanged(object sender, EventArgs e)
{
this.txtDir.KeyUp += new System.Windows.Forms.KeyEventHandler(CheckKeys);
}
private void CheckKeys(object sender, System.Windows.Forms.KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
if (sender == txtDir && txtDir.Text != "" && System.IO.Directory.Exists(txtDir.Text))
{
btnBrowse_Click(this, e);
}
}
}
为什么我要检查这么多次?我可以添加不同的测试吗?难道我做错了什么 ?(对于表单或文本框,没有设置为默认操作...)
谢谢你。