我目前正在将用VB6编写的Windows窗体应用程序翻译成用Visual Studio 2010编写的网页。
在VB6中,很容易通过'.getFocus()'找出哪个控件关注表单。我得出结论,如果可能的话,在vb2008中并不容易。
这可能吗?
答案 0 :(得分:2)
在WinForms中,您可以像这样创建一个 foreach 循环,并检查特定控件是否具有焦点:
foreach (Control item in this.Controls)
{
if (item.Focused)
//codes to handle the condition
}
或者像spacemonkeyes所说,使用this.ActiveControl
或VB的版本Me.ActiveControl
但是对于网页,我认为你必须使用JavaScript。 文档对象有一个名为 ActiveElement 的属性,据我所知,只有IE支持此属性:
document.ActiveElement
它返回对焦点控件的引用
要在服务器端使用它,您必须有一个提交给服务器的表单,或者您可以使用Ajax提交该特定控件。需要相当复杂的编码。
答案 1 :(得分:1)
Me.ActiveControl
将为您提供控件对象引用。这将返回Windows窗体控件,但您应该能够使用Me.ActiveControl.Name
或其他参数之一来获取所需内容,如果没有控件具有焦点,则不返回任何内容
但正如所指出的,这只适用于Windows窗体,Web应用程序,你需要做一些javascript skullduggery来获得你想要的东西。