MessageBox不显示所有给定的字符串

时间:2017-06-12 17:43:27

标签: c#

我有一个c#程序,我试图用一个特定的字符串调用一个messageBox(正常的字符串,没什么特别的),当到达一个变量与字符串连接时,它显然会停止连接。 代码:

string first = userInfo.info.getFirst(); //Some function
string last = userInfo.info.getLast(); // Some function
string message = first + "_" + last + " !";
MessageBox.Show(message);
// Output will be "(first value)";

我确实尝试调试,“first”和“last”的值是正确和正确的。 我还分析了是否出现了CPU或内存峰值(使用VS的工具),但没有看到。

关于问题的任何想法? 非常感谢!

1 个答案:

答案 0 :(得分:4)

如果Win32 GUI库在其中找到\0字符(U + 0000,Unicode" null"),则终止字符串。例如,如果你有:

MessageBox.Show("First part\0Second part");

然后才会显示First part

这里至少有两个选项:

  • 找出"坏"性格来自。它通常是对StreamTextReader API的误用,而不是注意Read调用返回了多少字节或字符
  • 只需删除" bad"字符,例如message = message.Replace("\0", "");

第一个选项更可取 - 如果我 无法获得干净的数据,我只会诉诸第二个选项。