2014-09-25 36 views
-1

我正在用.edmx为数据库连接创建一个小型应用程序。将数据库字符串值与 r n放入wpf文本框中

我的数据库里面我创建了例如值的字符串:

this is:\r\nA new line 

,当我把这个值(在调试),我看到值改为

this is:\\r\\nA new line 

导致WPF文本显示

this is:\r\nA new line 

,而不是

this is: 
A new line 

有什么想法,我在做什么错在这里?

编辑:

Windows 8.1 
VS2013 Express 
SQL Server Express (LocalDb) 

的值通过一个T-SQL命令存储在数据库中。 (我仍然在项目启动)

Insert into Atable 
(ID, value) 
VALUES 
(1, 'this is:\r\nA new line') 
+0

你在做什么操作系统? – ZoomVirus 2014-09-25 13:50:25

+2

你是如何将该字符串输入数据库的?我猜测你使用的任何工具都不会将'\ r \ n'序列作为回车+换行符,而是作为文字序列“斜杠,r,斜杠,n”读取,在这种情况下输出是正确的。因此,要么正确地存储字符串,要么在C#端手动处理转义序列。 – 2014-09-25 13:52:34

+0

windows将从数据库中读取一个字符,因此当它读取它时,它会看到\并自动将其更改为\\,因此您需要的是检查\\ r \\ n并更改它的函数到system.enviroment.newline。 – ZoomVirus 2014-09-25 13:52:45

回答

3

因为在sql \r并不意味着什么特别的。在c#中,\r与ascii字符#10相同,不可打印。你试图做的是一个“转义序列”,它只存在于c#中。

如果您在c#中创建转义字符并将其保存到sql中,它将会回读得很好。但是,如果你在sql中输入转义字符,它不会是你所期望的。

所以,在SQL查询中,你可以这样做:

select 'this is:' + CHAR(13) + CHAR(10) + 'A new line' -- same as "\n\r" in c# 

在C#中,这将是

string message = "this is\r\nAnew line" 

或者,更好,使用内置的

string message = "this is" + Environment.NewLine + "A new line"; 
+0

一个尽快 – Schuere 2014-09-25 13:59:31

+0

解决它,tyvm :) – Schuere 2014-09-25 15:42:02

相关问题