2009-04-07 4 views
1

J'ai un contrôle personnalisé qui fait partie d'une liste. Le texte qu'il doit afficher est défini en affectant une valeur à sa propriété Text. Au moment de l'exécution, ce texte est chargé à partir d'une base de données. Je veux ajouter ce texte avec la chaîne "Toelichting:" (Néerlandais pour "Explication"). Je peux y arriver en définissant la propriété FormatString du contrôle à ce qui suit:Pouvez-vous inclure du code de vérification de condition dans une chaîne de format?

"Toelichting: {0}" 

Maintenant, si le texte qui est chargé est une chaîne vide, je veux afficher « Toelichting: – », donc avec une salle -dash à la fin. Sinon, je veux afficher "Toelichting: MyText". Est-il possible d'ajouter du code de vérification de condition à la chaîne FormatString, de sorte que je puisse vérifier si le paramètre n'est pas vide?

Répondre

1

Non, il n'y a aucun moyen de le faire.

+0

Malheureusement, c'est la réponse la plus concise et correcte à mes questions. Les autres suggestions seraient de bonnes solutions de contournement, mais malheureusement, elles ne sont pas une option pour moi. – Daan

+0

Si vous aviez la possibilité de lier à un type autre que string, vous pouvez remplacer la méthode ToString() sur ce type pour faire ce que vous vouliez. Si vous pouvez envelopper votre chaîne dans un tel type, cela fonctionnera. –

5

Pourquoi pas seulement?

string.Format("Toelichting: {0}", string.IsNullOrEmpty(explanation) ? "–" : explanation); 

Je ne pense pas qu'il existe un moyen d'intégrer cela dans la chaîne de format.

+0

Je ne peux pas faire cela, parce que je n'ai aucun contrôle sur l'affectation réelle du texte au contrôle, car il fait partie d'un contrôle composite plus complexe. C'est pourquoi j'ai essayé d'intégrer cette logique dans la chaîne FormatString. – Daan

+0

Ah. Dans ce cas, je crains que vous ayez besoin de remplacer une chaîne vide par un en-tiret lorsque vous récupérez les données. Pardon. –

1

Vous pouvez le faire comme ceci:

String.Format("Toelichting: {0}", 
    (String.IsNullOrEmpty(yourstr)) ? "-" : yourstr); 

pas parfait, mais son relativement compact et facile à lire.

+0

Je ne peux pas faire cela, parce que je n'ai aucun contrôle sur l'affectation réelle du texte au contrôle, car il fait partie d'un contrôle composite plus complexe. C'est pourquoi j'ai essayé d'intégrer cette logique dans la chaîne FormatString. – Daan

1

Si vous faites ce genre de chose beaucoup alors envisager d'écrire votre propre formatter afin que vous puissiez écrire du code comme ça ...

foo = string.Format (nouveau MyFormatter(), « Toelichting: {0: explication} ", barre); MyFormatter implémenterait IFormatProvider et ICustomFormatter.

Vérifiez cette ...

.NET: Is there a String.Format form for inserting the value of an object property into a string?

... ce qui est probablement plus compliqué que vous avez besoin (comme il oeuvre dans la réflexion et fonctionne avec tout objet)

Questions connexes