0

取得している例外からの StackTrace を表示する次のようなコードがあります。

catch (Exception x)
{
    MessageBox.Show(string.Format("Booboo ({0}) in buttonGetDeviceLangVal_Click(). StackTrace == {1}",
        x.Message, x.StackTrace));
}

...しかし、不動産の制約により、ちっぽけな混乱した仕掛け (ハンドヘルド デバイス) の腸からコミュニケ全体を見ることはできません。MessageBox を上にドラッグすることはできません。頭を上部にぶつけて、ストーリーの残りの部分が見えるように屋根に穴を開けることを拒否します。

では、MessageBox を取得して文字列を「エピソード」に分割し、循環できるようにするにはどうすればよいでしょうか。

私のアイデア(疑似コード)は次のようなものです:

catch (Exception x)
{
    const int MAX_CHARS_TO_SHOW = 314;
    string exmsg = string.Format("Booboo ({0}) in 
        buttonGetDeviceLangVal_Click(). StackTrace == {1}",
        x.Message, x.StackTrace);
    int msglen = exmsg.Len;
    int charsDisplayed = 0;
    while (charsDisplayed < msglen) do
    {
        string exmsgepisode = String.Copy(exmsg, charsDisplayed, MAX_CHARS_TO_SHOW);
        MessageBox.Show(exmsgepisode);
        charsDisplayed += charsDisplayed;
    }
}

...しかし、「そこにいる」誰かがより良いアイデアを持っているか、すでにこれを解決していると思います...私は正しいと思いましたか?

4

1 に答える 1

0

これは機能します:

catch (Exception x)
{
    const int MAX_CHARS_TO_SHOW = 314;
    string exmsg = string.Format("Boo-boo in buttonGetDeviceLangVal_Click(): == {0}", x);
    int msglen = exmsg.Length;
    int charsDisplayed = 0;
    while (charsDisplayed < msglen)
    {
        int CharsToGrab = MAX_CHARS_TO_SHOW;
        int CharsLeft = msglen - charsDisplayed;
        if (CharsLeft < MAX_CHARS_TO_SHOW) CharsToGrab = CharsLeft;
        string msgepisode = exmsg.Substring(charsDisplayed, CharsToGrab);
        int episodeLen = msgepisode.Length;
        MessageBox.Show(msgepisode);
        charsDisplayed = charsDisplayed + episodeLen;
    }
}

残念ながら、結果として得られた二重エピソード MessageBox の表示は、根本的な問題の解決にはあまり役立ちませんでした。それは私に教えてくれます(一言で言えば):

Control-OnClick
Button-Onclick
ButtonBase-WinProc
Forms.Ctrl_InternalWinProc
Microsoft.AGL.Forms.EVL_EnterMainLoop
ApplicationRun
于 2014-06-16T18:33:51.170 に答える