2010-10-07 8 views
3

Comment puis-je évaluer une chaîne en C# Application Windows parce que je dois Dynamiquement sélection objet dans un formulaire basé sur la combinaison de deux cordes qui me donne le nom de l'objet nécessaireEval Fonction en C#

+1

Dupliquer? autour de la pile – Younes

+0

En fait, je ne pense pas que ce soit une copie exacte. Eh bien, au moins avec une question pointée comme un doublon. La question ici concerne les winforms. –

+0

Peut-être que cette question duplique avec http://stackoverflow.com/questions/1178967/how-do-i-refer-to-a-windows-form-control-by-name-c-vb –

Répondre

2

Vous pouvez essayer la méthode ControlCollection.Find pour rechercher le contrôle par nom.
Par exemple:

MyForm.Controls.Find("FooButton", true); 

méthode retourne un tableau de l'élément de commande avec la propriété Name réglé sur « FooButton ».

Il n'y a pas de C# eval equivalent. Mais par le lien, vous pouvez trouver des réponses utiles. Ofc, si vous voulez trouver ou évaluer quelque chose que les contrôles winform

MISE À JOUR: Je pense parfois qu'il est préférable d'obtenir le contrôle par clé directement. Par exemple:

Control control = this.Controls["FooTxtBox"]; 
if(control==null) 
     { 
      MessageBox.Show("Control not found"); 
     } 
control.Text = "something"; 
+0

J'ai essayé cette ligne de code mais cela ne fonctionne pas "MyForm.Controls" nécessite une référence d'objet J'utilise VS 2008 SP1 et .net Framework 3.5 SP1 – Mario

+0

C'est juste un exemple de code. MyForm - c'est une variable de formulaire dans mon application. Vous devriez placer votre nom de formulaire à la place. Ou si vous exécutez ce code dans la classe Form vous pouvez utiliser this.Controls.Find ("FooButton", true); –

+0

Il est préférable de fournir un extrait de code et des informations d'erreur (message d'erreur, ligne). Actuellement, je ne comprends pas quel est le problème. –

0

C'est feature (compilateur en tant que service) qui devrait être disponible dans la prochaine version de .NET Framework, version 5.

Peut-être que la réflexion pourrait être votre solution pour cela?

+0

Que voulez-vous dire par réflexion – Mario

0

Il suffit d'utiliser la chaîne comme la recherche de la collection Form.Controls. Ensuite, lorsque vous avez l'instance du contrôle, appelez simplement la méthode dont vous avez besoin pour la sélectionner.