2010-11-16 4 views
0

Je traduis actuellement une application sous forme de fenêtres, écrit en VB6, à une page Web écrite en Visual Studio 2010..NET - Quel contrôle a le focus? - Visual Studio 2008

En VB6 il est facile de savoir quel contrôle a le focus sur le formulaire à l'aide. getFocus() '. Je suis venu à la conclusion que ce n'est pas si facile, si possible, dans vb2008.

Est-ce possible?

+2

Le modèle d'interface utilisateur d'une page Web est * très * différent d'une application winform. Oui, il n'y a pas de propriété Focused. Cela arrive dans le navigateur, à des milliers de kilomètres de votre serveur. –

Répondre

2

En WinForms vous pouvez créer un si un contrôle spécifique comme celui-ci et vérifier la boucle foreach a le focus:

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

Ou comme dit spacemonkeyes, utilisez this.ActiveControl ou la version VB Me.ActiveControl

Cependant, pour un page web Je pense que vous devez utiliser JavaScript. L'objet document a une propriété nommée activeElement qui, autant que je sache, que IE soutient cette propriété: document.ActiveElement
Il renvoie une référence au contrôle ciblé.
Pour l'utiliser côté serveur, vous devez avoir un formulaire qui est soumis au serveur ou vous pouvez utiliser Ajax pour soumettre ce contrôle particulier. Des codages assez complexes sont requis.

1

Me.ActiveControl vous donnera une référence d'objet de contrôle. Cela retourne le contrôle de formulaire Windows, mais vous devriez être en mesure d'utiliser Me.ActiveControl.Name ou l'un des autres paramètres pour obtenir ce dont vous avez besoin, ne renvoie rien si aucun contrôle n'a le focus

Mais comme indiqué, cela ne fonctionne que sous forme de fenêtres, applications Web, vous aurez besoin de faire un peu de javascript skullduggery pour obtenir ce que vous voulez.

Questions connexes