【发布时间】:2013-02-26 20:39:07
【问题描述】:
我正在开发一个使用 USB 条形码扫描仪的简单 ASP.NET C# 应用程序。我有一个详细信息视图,默认为插入,底部有一个提交按钮。当页面加载时,表单从 URL 中获取 ID 并将其输入到第一个字段,然后将光标焦点设置到第二个字段。
默认情况下,USB 扫描仪会输入它扫描的数字,然后按 Enter 键。我想在里面放一个处理程序,基本上是这样的:
- 如果光标在 textbox2 中并按下 Enter 键,则将数据保留在 textbox2 并将光标移动到 textbox3。
- 如果光标在 textbox3 中并按下 Enter 键,则将数据保留在 textbox3 并点击提交按钮。
这个想法是,用户可以连续扫描 3 或 4 个条形码,填写表单中的每个文本框,而无需 A) 每次都触发提交按钮,并且 B) 不必在扫描之前单击每个字段 (如果我禁用了 Enter 键)。
这是我的代码的开头,它从 URL 中获取 ID 并填充 textbox1,然后将焦点设置为 textbox2。
protected void DetailsView1_DataBound(object sender, EventArgs e)
{
if (DetailsView1.CurrentMode == DetailsViewMode.Insert)
{
if (!string.IsNullOrEmpty(Request.QueryString["id"]))
{
TextBox tbox1 = DetailsView1.FindControl("TextBox1") as TextBox;
TextBox tbox2 = DetailsView1.FindControl("TextBox2") as TextBox;
if (tbox != null)
{
tbox.Text = Request.QueryString["id"].ToString();
}
SetFocus(tbox2);
}
}
}
【问题讨论】:
-
当
textbox1完成后,您不能检查一下当前哪个控件具有焦点并设置它吗?例如,如果tbox2有焦点,SetFocus(tbox3)?