繁体   English   中英

窗体或面板中的默认焦点未在Web浏览器控件中设置

[英]Default focus in a form or panel does not set inside a Web browser control

我使用defaultfocus属性在窗体或面板中设置默认焦点。 我正在尝试为文本框设置默认焦点,它在浏览器中正常工作。

但是当在VB6中使用Web浏览器控件加载相同页面时,我遇到了问题。 使用Web浏览器控件(VB6 Microsoft Internet控件)加载页面时,不会设置默认焦点。 我尝试使用相同的形式,它不起作用。 我尝试在页面加载中使用.focus,它也无法在Web浏览器控件中运行。 然后我尝试刷新页面,如下所示

WebBrowser1.Navigate "url here"
WebBrowser1.Refresh

如果我使用刷新,那么焦点将被正确设置。 但这将再次加载页面(它再次加载aspx的形式)。 那么我可以在我的ASP网站上做任何其他更好的解决方案吗? 或任何可以做同样的解决方案?

我尝试了通过WinForm代码执行此操作的各种方法,但效果不是很好。 如果您需要将焦点设置为文本框,那么使用JavaScript可能会更好。

如果文本框是ASP.net服务器控件,则可以使用:

<html>
<head>
</head>
<body>

<form runat="server">


    <asp:TextBox id="FirstBox" runat="server" /><br>
    <asp:TextBox id="SecondBox" runat="server" />

    <script language="javascript" type="text/javascript">
        var field = '<%= SecondBox.ClientID%>';
        document.getElementById(field).value = field;
        document.getElementById(field).focus();
        document.getElementById(field).select();
    </script>
</form>

</body>
</html>

在此输入图像描述

这是一个占位符帖子。

    '--- fix WebControl compatibility
    lIEMajor = C_Lng(At(Split(pvGetFileVersion(CreateInstance(PROGID_FSO), GetSpecialFolder(ucsOdtSystem) & "\ieframe.dll"), "."), 0))
    If lIEMajor > 7 Then
        With InitRegistryAccess(ucsRegNone, "Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION")
            If .ReadProperty(GetErrorProcessName(), 0, ucsRvtDword) < lIEMajor * 1000 Then
                .WriteProperty GetErrorProcessName(), lIEMajor * 1000, 0, ucsRvtDword
            End If
        End With
    End If

上面的代码使用了很多辅助函数/类,但想法很清楚 - 如果是IE7或更高版本,请获取IE大调 - >将major乘以1000并在需要时更新HKCY_CURRENT_USER的密钥

将更新摘要片段并在稍后包含API声明。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM