如何:在 ASP.NET Web 服务器控件上设置焦点

更新:2007 年 11 月

如果焦点在应用程序中非常重要,则可以使用服务器代码将焦点置于特定的 ASP.NET Web 服务器控件上。可以将焦点动态置于特定的控件上,也可以指定控件默认获得焦点。可以将窗体作为整体设置默认焦点,也可以在 Panel 控件的子控件上设置默认焦点。

可以将焦点置于以下类型的控件上:

还可以将焦点设置到包含上面列出的一个或多个控件的控件上。例如,可以将焦点设置到 Login 控件上。在这种情况下,焦点将被置于 Login 控件内的第一个符合要求的控件上。

一般情况下,如果将焦点设置到无法接收焦点的控件或者隐藏或禁用的控件上,则将忽略此调用。如果尝试在非可视控件(如数据源控件)上设置焦点,则将引发异常。

ms178232.alert_note(zh-cn,VS.90).gif说明:

需要在浏览器中启用客户端脚本才能设置焦点。

在 ASP.NET Web 服务器控件上设置焦点

  • 调用该控件的 Focus 方法。

    - 或 -

  • 调用页的 SetFocus 方法,以向该页传递要在上面设置焦点的控件的 ID。

    下面的代码示例演示如何在 ID 为 TextBox1 的控件上设置焦点:

    ms178232.alert_security(zh-cn,VS.90).gif安全说明:

    该示例具有一个文本框,用于接受用户输入,这是一个潜在的安全威胁。默认情况下,ASP.NET 网页验证用户输入是否不包括脚本或 HTML 元素。有关更多信息,请参见脚本侵入概述

     [Visual Basic]
    Protected Sub Page_Load(ByVal sender As Object, _
        ByVal e As System.EventArgs)
        TextBox1.Focus()
    End Sub
    
    protected void Page_Load(object sender, EventArgs e)
    {
        TextBox1.Focus();
    }
    

在窗体或面板中设置默认焦点

  • 设置页中的 form 元素的 DefaultFocus 属性或 Panel 控件的该属性。

    下面的代码示例演示默认焦点设置为控件 TextBox1 的页:

    <%@ Page Language="VB" %>
    <html>
    <head runat="server">
      <title>Test Page</title>
    </head>
    <body>
      <form id="form1" runat="server" defaultfocus="TextBox1" >
        <div>
          <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
          <br />
          <asp:Button ID="Button1" runat="server" Text="Button" />
          <br />
        </div>
      </form>
    </body>
    </html>
    
<%@ Page Language="C#" %>
<html>
<head runat="server">
  <title>Test Page</title>
</head>
<body>
  <form id="form1" runat="server" defaultfocus="TextBox1" >
    <div>
      <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
      <br />
      <asp:Button ID="Button1" runat="server" Text="Button" />
      <br />
    </div>
  </form>
</body>
</html>

请参见

概念

ASP.NET Web 服务器控件中的 Tab 键顺序、焦点和访问键