3

我正在尝试显示一条简单的消息,过去我可能已经完成了数千次,现在……完整的文本字符串没有显示在 MessageBox 中。我没有做任何不同的事情,所以我没有看到问题。这是我的代码:

if (MessageBox.Show("The text in this file has changed. Do you want to save changes?",
    "TextEditor - Confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1) == DialogResult.Yes)
{ //Do stuff 
} else { 
// Do stuff }

现在,当显示消息框时,唯一可见的文本是:

此文件中的文本已更改。

注意:是/否按钮是可见的,消息框看起来很正常,它看起来没有损坏或任何东西,所以我不知道为什么我不能再在那里显示一个简单的大坝问题!?...有人知道吗?你以前有过这种经历吗?

谢谢

好的,这很奇怪......(已编辑)

我刚刚更改了上述消息框文本的文本,现在它显示以下内容:

此文件中的文本已更改。你是吗

但是问题的最重要部分仍然没有显示......

4

9 回答 9

3

有几件事要尝试:
1)如果运行调试版本,请尝试编译并运行发布版本
2)尝试创建一个全新的项目并将代码复制到新项目并运行它(可能是项目设置已更改,然后您可以区分文件)
3)尝试禁用您拥有的任何防病毒软件。

于 2009-08-20T08:17:11.787 回答
2

“变”之间的空格。并且“Do”不会是一些奇怪的字符(比如NULL),不是吗?尝试删除整个文本,然后再次手动键入。


嗯...只是想起了 McAffee 防病毒和 .NET 的一些奇怪的旧错误,因此消息框的全部内容都会消失。然而,这已经是 5 多年前的事了……

也许尝试更新你的电脑?而且 - 你不会碰巧在运行 McAffee,对吗?:)


想法 3:将您编译的 .EXE 和源文件发送给我们?
想法 4:编译它,然后用 Reflector 打开它并检查它是如何编译的。编译器也有错误...

于 2009-08-20T07:50:54.803 回答
2

您是否尝试过(只是为了确定)通过在整个字符串前面加上@-符号来转义整个字符串?

像这样:


if (MessageBox.Show(@"The text in this file has changed. Do you want to save changes?",
    @"TextEditor - Confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1) == DialogResult.Yes)
{ //Do stuff 
} else { 
// Do stuff }
于 2009-08-20T08:05:36.617 回答
2

它有些奇怪/愚蠢——是时候通过愚蠢来反击了

第一个问题 - 您的所有消息框都受到影响吗?如果不是,那么这个案例有问题。如果他们都受到影响,那么......好吧,我真的不知道该建议什么。更多的咖啡?

最好的办法是将问题减少到尽可能小的程度。创建一个新消息框并仅输入您当前的文本(复制并粘贴)。不要设置任何其他参数并将其从if语句中取出

如果可行,那么问题出在参数上 - 慢慢添加参数直到它中断

如果不是,那么问题出在文本上 - 删除文本并重新输入 - 那里可能有一个奇怪的字符 - 例如,文本是否在 MS Word 附近... - 如果可行,那么你就是金 - 否则,删除一个字一个字,直到它开始工作

我想你会发现它真的很愚蠢

于 2009-08-20T09:36:59.987 回答
2

您是否尝试将文本放入变量 juste 以查看它是否有效?

string message = @"The text in this file has changed. Do you want to save changes?";
string title = "TextEditor - Confirmation";

if (MessageBox.Show,(message, title, MessageBoxButtons.YesNo, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1) == DialogResult.Yes){ //Do stuff } else { // Do stuff }
于 2009-08-20T09:47:16.753 回答
1

我也试过了,它似乎工作正常。也许检查您运行它的机器上的区域/语言设置?

form.Designer.cs中没有设置消息框的大小吗?

于 2009-08-20T08:43:37.817 回答
1

您是否尝试过使用 1 个表单和以下代码创建另一个解决方案 - btw 适用于我 vs2008 winXP en-gb lang

using System;

using System.ComponentModel;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            if (MessageBox.Show("The text in this file has changed. Do you want to save changes?", "TextEditor - Confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1) == DialogResult.Yes)
            {
                MessageBox.Show("yes");
            }
            else
            {
                MessageBox.Show("no");
            }


        }
    }
}
于 2009-08-20T09:51:52.360 回答
1

您可以在“更改”之后尝试换行符 \n 吗?

于 2009-08-20T12:04:34.450 回答
-1

我刚刚解决了这个问题。我正在使用 Windows XP Home Edition,并且还使用 Stardock 的 WindowBlinds 来美化拥有 500 年历史的 WindowsXP 界面。这在过去从来没有造成任何问题,我已经使用 WindowBlinds 多年,并且也做了大约一年半的 C# 东西,这是 WindowBlinds 第一次造成任何问题。

MessageBox 中仅显示部分文本的原因仍然是一个谜,但是当我决定尝试关闭 WindowBlinds 并再次应用标准 XP 主题时……所有 MessageBox 在 C# 中都能正常工作。


谢谢大家的好建议,非常感谢。:o)

杰森·佩齐门蒂

于 2009-08-20T16:16:46.967 回答