.NET - 哪个控件有焦点? - Visual Studio 2008

时间:2010-11-16 21:13:22

标签: vb.net visual-studio-2008 vb6 focus

我目前正在将用VB6编写的Windows窗体应用程序翻译成用Visual Studio 2010编写的网页。

在VB6中,很容易通过'.getFocus()'找出哪个控件关注表单。我得出结论,如果可能的话,在vb2008中并不容易。

这可能吗?

2 个答案:

答案 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来获得你想要的东西。