C# 能否在格式字符串中包含条件检查代码?

C# 能否在格式字符串中包含条件检查代码?,c#,.net,compact-framework,C#,.net,Compact Framework,我有一个自定义控件,它是列表的一部分。应显示的文本是通过为其文本属性指定值来设置的。在运行时,此文本从数据库加载。我想在这个文本前面加上字符串“Toelichting:”(荷兰语表示“解释”)。我可以通过将控件的FormatString属性设置为以下值来完成此操作: "Toelichting: {0}" 现在,如果加载的文本是一个空字符串,我想显示“Toelichting:–”,因此在末尾有一个en破折号。否则,我想显示“Toelichting:MyText”。是否可以向FormatStrin

我有一个自定义控件,它是列表的一部分。应显示的文本是通过为其文本属性指定值来设置的。在运行时,此文本从数据库加载。我想在这个文本前面加上字符串“Toelichting:”(荷兰语表示“解释”)。我可以通过将控件的FormatString属性设置为以下值来完成此操作:

"Toelichting: {0}"

现在,如果加载的文本是一个空字符串,我想显示“Toelichting:–”,因此在末尾有一个en破折号。否则,我想显示“Toelichting:MyText”。是否可以向FormatString添加一些条件检查代码,以便检查参数是否为空

不,没有办法。不,没有办法。为什么不这样做呢

string.Format("Toelichting: {0}", string.IsNullOrEmpty(explanation) ? "–" : explanation);
我认为没有办法将其嵌入到格式字符串中。

为什么不只是这个

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

我认为没有办法将其嵌入格式字符串中。

您可以这样做:

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

虽然不完美,但它相对简洁易读。

您可以这样做:

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

不完美,但它比较紧凑和可读。

< P>如果你做了很多事情,那么考虑编写你自己的格式化程序,这样你就可以编写这样的代码……/P> foo=string.Format(新的MyFormatter(),“Toelichting:{0:explauration}”,bar)

MyFormatter将实现IFormatProvider和ICustomFormatter

看看这个


。。。这可能比你需要的复杂(因为它处理反射和与任何对象一起工作)

如果你做了很多事情,那么考虑编写你自己的格式化程序,这样你就可以编写这样的代码……/p> foo=string.Format(新的MyFormatter(),“Toelichting:{0:explauration}”,bar)

MyFormatter将实现IFormatProvider和ICustomFormatter

看看这个


。。。这可能比您需要的更复杂(因为它处理反射并处理任何对象)

我不能这样做,因为我无法控制将文本实际分配给控件,因为它是更复杂的复合控件的一部分。这就是为什么我试图在FormatString.Ah中嵌入这个逻辑。在这种情况下,在检索数据时,恐怕需要用破折号替换空字符串。抱歉,我不能这样做,因为我无法控制文本对控件的实际分配,因为它是更复杂的复合控件的一部分。这就是为什么我试图在FormatString.Ah中嵌入这个逻辑。在这种情况下,在检索数据时,恐怕需要用破折号替换空字符串。抱歉,我不能这样做,因为我无法控制文本对控件的实际分配,因为它是更复杂的复合控件的一部分。这就是为什么我试图将此逻辑嵌入FormatString中,但我无法做到这一点,因为我无法控制将文本实际分配给控件,因为它是更复杂的复合控件的一部分。这就是为什么我试图将此逻辑嵌入到FormatString中。不幸的是,这是对我的问题最简洁、最正确的回答。其他建议可能是很好的解决办法,但不幸的是,我没有选择。如果您可以选择绑定到字符串以外的类型,那么您可以覆盖该类型上的ToString()方法来执行您想要的操作。如果你能把你的字符串包装成这样一种类型,那就行了。不幸的是,这是对我的问题最简洁、最正确的回答。其他建议可能是很好的解决办法,但不幸的是,我没有选择。如果您可以选择绑定到字符串以外的类型,那么您可以覆盖该类型上的ToString()方法来执行您想要的操作。如果您可以将字符串包装成这样的类型,那就行了。