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 }

メッセージボックスが表示されると、表示される唯一のテキストは次のとおりです。

このファイルのテキストは変更されています。

注:はい/いいえボタンが表示され、メッセージボックスは正常に見え、壊れていないように見えるので、なぜそこに簡単なダムの質問を表示できないのかわかりません!?...これについて知っていますか?これを経験したことがありますか?

ありがとう

OK、これはおかしい... (編集済み)

上記のメッセージ ボックス テキストのテキストを変更したところ、次のように表示されます。

このファイルのテキストは変更されています。あなたは?

しかし、質問の最も重要な部分がまだ表示されていません...

4

9 に答える 9

3

いくつかのことを試してみてください:
1) デバッグ バージョンを実行している場合は、リリース バージョンをコンパイルして実行して
みてください。ファイルを比較できます)
3) 使用しているウイルス対策ソフトウェアを無効にしてみてください。

于 2009-08-20T08:17:11.787 に答える
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 に答える
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

「変更」の間のスペース。「Do」は変な文字 (NULL など) ではないでしょうか? テキスト全体を削除してから、もう一度手で入力してみてください。


うーん...McAffee アンチウイルスと .NET の奇妙な古いバグを思い出したところ、メッセージボックスの内容全体が消えてしまいました。ただし、これは5年以上前のことです...

PCをアップデートしてみてはいかがでしょうか?そして - あなたはたまたま McAffee を運営していたのではないでしょうか? :)


アイデア 3: コンパイルした .EXE とソース ファイルを送ってください。
アイデア 4: コンパイルしてから、Reflector でリッピングし、どのようにコンパイルされたかを確認します。コンパイラにもバグがあります...

于 2009-08-20T07:50:54.803 に答える
2

それは奇妙な/愚かなことです - 愚かであることによって反撃する時が来ました

最初の質問 - すべてのメッセージ ボックスが影響を受けますか? そうでない場合、このケースには何か問題があります。それらがすべて影響を受けている場合...まあ、実際に何を提案すればよいかわかりません。もっとコーヒー?

最善の方法は、問題を可能な限り小さくすることです。新しいメッセージ ボックスを作成し、現在のテキストのみを入力します (コピーして貼り付けます)。他のパラメータを設定してifステートメントから削除しないでください

それが機能する場合、問題はパラメーターにあります-壊れるまでゆっくりとパラメーターを追加します

そうでない場合は、テキストに問題があります - テキストを削除して再入力します - そこに奇妙な文字がある可能性があります - たとえば、テキストは MS Word の近くにありましたか... - それが機能する場合、あなたはゴールデンです - そうでない場合は、削除しますそれが機能し始めるまで一言一句

私はあなたがそれが本当にばかげていることに気付くと思います

于 2009-08-20T09:36:59.987 に答える
1

1つのフォームと次のコードで別のソリューションを作成してみましたか?btwは私からvs2008 winXPen-gblangで動作します

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

私も試してみましたが、うまくいくようです。実行しているマシンの地域/言語設定を確認してください。

フォームのメッセージ ボックスのサイズは決まっていません。Designer.cs はありますか?

于 2009-08-20T08:43:37.817 に答える
-1

私はこの問題を解決しました。私はWindowsXPHome Editionを使用しており、StardockのWindowBlindsを使用して500年前のWindowsXPインターフェイスをきれいにしています。これは過去に問題を引き起こしたことはなく、私はWindowBlindsを何年も使用しており、C#の作業も約1年半行っています。WindowBlindsがこれまでに問題を引き起こしたのはこれが初めてです。

テキストの一部だけがMessageBoxに表示されていた理由は、まだ謎に包まれていますが、WindowBlindsを閉じて、標準のXPテーマを再度適用することにしたとたんに...すべてのMessageBoxはC#で正しく機能します。


良い提案をありがとうございました。彼らは非常に感謝しています。:o)

ジェイソン・ペジメンティ

于 2009-08-20T16:16:46.967 に答える