C # MessageBox больше не отображает всю строку текста - PullRequest
2 голосов
/ 20 августа 2009

Я пытаюсь отобразить простое сообщение, которое я делал, наверное, тысячи раз в прошлом, и СЕЙЧАС ... Полная строка текста НЕ отображается в 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 }

Теперь, когда отображается окно сообщения, отображается только один текст:

Текст в этом файле изменился.

ПРИМЕЧАНИЕ. Кнопки Да / Нет видны, и окно сообщений выглядит нормально, оно не выглядит сломанным или что-то в этом роде, поэтому я понятия не имею, почему я больше не могу отображать там простой вопрос о плотине!? .. Кто-нибудь знает об этом? Вы испытывали это раньше?

Спасибо

Хорошо, это слово ... (отредактировано)

Я только что изменил текст для вышеприведенного текста в окне сообщения, и теперь он отображает следующее:

Текст в этом файле изменился. Ты ва

Но самая важная часть вопроса по-прежнему не отображается ...

Ответы [ 9 ]

3 голосов
/ 20 августа 2009

Несколько вещей, чтобы попробовать:
1) Если вы используете отладочную версию, попробуйте скомпилировать и запустить релизную версию
2) Попробуйте создать совершенно новый проект и скопировать код в новый проект и запустить его (возможно, настройки проекта были изменены, тогда вы можете различать файлы) 3) Попробуйте отключить все имеющиеся у вас антивирусные программы.

2 голосов
/ 20 августа 2009

Вы пытались поместить свой текст в переменную 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 }
2 голосов
/ 20 августа 2009

Это что-то странное / глупое - пора действовать глупо

Первый вопрос - затронуты ли все ваши окна сообщений? Если нет, то в этом случае что-то не так. Если они все затронуты, тогда ... ну, я не знаю, что предложить на самом деле. Еще кофе?

Лучшее, что можно сделать, - это уменьшить проблему до минимально возможного. Создайте новое окно сообщения и введите только свой текущий текст (скопируйте и вставьте его). Не устанавливайте другие параметры и не используйте их в операторе if

Если это работает, то проблема с параметрами - медленно добавляйте параметры, пока они не сломаются

Если это не так, то проблема с текстом - удалите текст и повторите его - там может быть странный символ, например текст был рядом с MS Word ... - если это работает, то ты золотой - иначе удаляйте слово за словом, пока оно не заработает

Полагаю, вы обнаружите, что это действительно глупо

2 голосов
/ 20 августа 2009

Вы пытались - просто чтобы быть уверенным - чтобы избежать целой строки, добавив к ней префикс @?

вроде так:


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 }
2 голосов
/ 20 августа 2009

Пробел между "изменился". и "Do" не было бы каким-то странным персонажем (скажем, NULL), не так ли? Попробуйте удалить весь текст, а затем снова введите его вручную.


Хм ... просто вспомнил какую-то странную ошибку с антивирусом McAffee и .NET, после чего все содержимое почтовых ящиков исчезло. Это было, однако, более 5 лет назад ...

Может быть, попробовать обновить ваш компьютер? И вы бы случайно не управляли Макаффи? :)


Идея № 3: Пришлите нам ваши скомпилированные .EXE и исходные файлы?
Идея № 4: скомпилируйте, затем откройте его с помощью Reflector и проверьте, как он был скомпилирован. У компиляторов тоже есть ошибки ...
1 голос
/ 20 августа 2009

Не могли бы вы попробовать новую строку \ n после слова "изменен"?

1 голос
/ 20 августа 2009

Вы пытались создать другое решение с 1 формой и следующим кодом - кстати работает для меня 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");
            }


        }
    }
}
1 голос
/ 20 августа 2009

Я тоже пробовал, и, кажется, работает нормально. Может быть, проверьте региональные / языковые настройки на компьютере, на котором вы его запускаете?

Там нет установленного размера для окон сообщений в форме. Есть дизайн?

0 голосов
/ 20 августа 2009

Я только что решил эту проблему. Я использую Windows XP Home Edition, а также использую WindowBlinds от Stardock, чтобы выкрасить 500-летний интерфейс WindowsXP. Это никогда не вызывало никаких проблем в прошлом, я годами пользуюсь WindowBlinds, а также полтора года работаю на C #, и это первый раз, когда WindowBlinds вызывает какие-либо проблемы.

Причина, по которой в MessageBox отображалась только часть текста, все еще таит загадку, НО, как только я решил попробовать закрыть WindowBlinds и снова применить стандартную тему XP ... Вся MessageBox правильно работает в C #.

<ч /> Спасибо ВСЕМ за ваши хорошие предложения, они очень ценятся. : o)

Джейсон Пеццименти

...