代码之家  ›  专栏  ›  技术社区  ›  Johnrad

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

  •  0
  • Johnrad  · 技术社区  · 15 年前

    我正在将用VB6编写的windows窗体应用程序转换为用Visual Studio 2010编写的网页。

    在VB6中,使用“.getFocus()”很容易找出哪个控件将焦点放在窗体上。我得出的结论是,如果有可能的话,在vb2008中并不是那么容易。

    这有可能吗?

    2 回复  |  直到 15 年前
        1
  •  2
  •   Maghoumi    15 年前

    在WinForms中,您可以创建 foreach公司 这样循环并检查特定控件是否有焦点:

    foreach (Control item in this.Controls)
    {
     if (item.Focused)
      //codes to handle the condition
    }  
    

    或者像太空人说的,用 this.ActiveControl 或VB版本 Me.ActiveControl

    但是对于一个网页,我认为你必须使用JavaScript。这个 文件 对象具有名为 活性元素 据我所知,只有IE支持这个属性: document.ActiveElement
    它返回对聚焦控件的引用。
    要在服务器端使用它,必须有一个提交给服务器的表单,或者可以使用Ajax提交该特定控件。需要相当复杂的编码。

        2
  •  1
  •   aphoria    10 年前

    Me.ActiveControl 将为您提供一个控件对象引用。这将返回windows窗体控件,但您应该能够使用 Me.ActiveControl.Name 或者其他一个获取所需内容的参数,如果没有控件具有焦点,则不返回任何内容

    但正如所指出的,这只适用于windows窗体,web应用程序需要做一些javascript skullduggery才能得到您想要的。