我不明白我的代码中发生了什么。
我有WrapPanel
,其中包含一些RadioButton
。我使用Tag
属性将RadioButton的Content
属性与真实字符相关联:例如制表 = \ t 。
这是XAML部分:
<WrapPanel HorizontalAlignment="Left" Margin="43,24,0,21" Name="wpColSep" VerticalAlignment="Center" Width="286" Orientation="Horizontal" Height="58">
<RadioButton Content="Tabulation" Height="16" Name="rbTab" Padding="6,0,20,0" Margin="0,0,0,7" Tag="\t" />
<RadioButton Content="Espace" Height="16" Name="rbSpace" Padding="6,0,20,0" Margin="0,0,0,7" Tag=" " />
<RadioButton Content="Point-virgule" Height="16" Name="rbPointVirgule" Padding="6,0,20,0" Margin="0,0,0,7" Tag=";" />
<RadioButton Content="Virgule" Height="16" Name="rbVirgule" Margin="0,7,0,0" Padding="6,0,20,0" Tag="," />
<RadioButton Content="Autre :" Height="16" Name="rbAutre" Margin="0,7,0,0" Padding="6,0,20,0" />
<TextBox Height="23" Name="tbAutre" Width="41" Margin="0,10,0,0" Padding="6,0,20,0" />
</WrapPanel>
然后,我尝试获取已检查的RadioButton
并使用以下代码将字符保存在Tag
中:
var rbChecked = wpColSep.ChildrenOfType<RadioButton>().Where(c => c.IsChecked ?? false).FirstOrDefault();
if (rbChecked == rbAutre && !String.IsNullOrEmpty(tbAutre.Text))
{
//Not important here
}
else if (rbChecked != null)
{
ConfigImport.SeparateurColonne = rbChecked.Tag.ToString();
}
else
{
//No RadioButton checked
}
这很有效,但当Tag
=&#34; \ t&#34;时,rbChecked.Tag.ToString()
生成&#34; \\ t&#34;。
这是什么原因以及如何避免这种情况?
提前谢谢你,抱歉我的英语不好。
答案 0 :(得分:3)
您可能正在查看调试器中的结果。
C#必须使用\
转义某些字符,例如\t
,\r
和\"
。您将在调试器控制台中看到转义字符串。别担心,实际的字符串很好。单击变量旁边的放大镜,您将看到实际值。
'错误'值(与string abc = "abc\\n"
相同):
看起来没问题: