DOBON.NET DOBON.NETプログラミング掲示板過去ログ

(Win7)長いタイトルのメッセージボックス

環境/言語:[環境(Windows 7)、Visual  Studio2008、使用言語(C#)、.NET Frameworkのバージョン(2.0)]
分類:[.NET]

いつもお世話になっております。
今回もよろしく御願い致します。

Windows 7 においてメッセージボックスを表示した場合に
タイトル文字が長い場合だと、文字列が途中で切れて「1234...」と表示されてしまいます。
Win XPなどではタイトルが長くても最後まで表示されていました。

メッセージ部分に無駄にスペースを入れれば、タイトルも表示できるのですが、
他に手立ては無いでしょうか?

********************************************************
Encoding sjisEnc = Encoding.GetEncoding("Shift_JIS");
int len = 0;

string title = "長いタイトルを表示してみる1234567890";
string msg = "メッセージ";
MessageBox.Show(msg, title, MessageBoxButtons.OK); // NG
// msgの後部に沢山スペースを入れてtitleを全て表示できるようにする
len = sjisEnc.GetByteCount(title);
msg = msg.PadRight(len*2);
MessageBox.Show(msg, title, MessageBoxButtons.OK); // OK

title = "12345678901234567890";
msg = "123456789012345";
MessageBox.Show(msg, title, MessageBoxButtons.OK); // NG
// msgの後部に沢山スペースを入れてtitleを全て表示できるようにする
len = sjisEnc.GetByteCount(title);
msg = msg.PadRight(len*2);
MessageBox.Show(msg, title, MessageBoxButtons.OK); // OK
********************************************************
■No27778に返信(ぱんだこぱんださんの記事)
タイトルバーに表示するのは短くして

メッセージ部分に表示するのを
タイトル

メッセージ

のようにすればよいのでは?
title = "名前を付けて保存の確認";
msg = "よろしいですか?";

上記のように、たまに見かけるようなメッセージ内容でも
タイトルが途中で「名前を付けて保存の...」となってしまいます。
("保存の確認"にすればイイじゃん!!っという回答は、もう無しで御願いします。。。)

特別に長いタイトルを付けたいわけではないのですが
もしこのような事が起きたら、皆さんならどう解決するか
お教え下さい。よろしく御願いします。
■No27794に返信(ぱんだこぱんださんの記事)

長いタイトルとか短いメッセージとかあまり使わないので
実績からは言えないです。

空白を入れればOKという1つの案を思いつかれたわけですが
どの辺が問題なのでしょうか?

メッセージダイアログを自分で作ってしまうというのも1つの方法かも
しれません。
■No27794に返信(ぱんだこぱんださんの記事)
> 特別に長いタイトルを付けたいわけではないのですが
> もしこのような事が起きたら、皆さんならどう解決するか
> お教え下さい。よろしく御願いします。

Windows7上でいろんなアプリのメッセージボックスを出してみると
どのアプリでも同様に表示される(少し長い目な文字列なだけで2、3文字省略される)ので、
MessageBoxを使う限りはどうしようもないように思います。
(VisualStyleを適用しないようにすると回避できますが見た目が全然違うので現実的な案ではないですね)

メッセージの長さで調整する案はよい回避策だと思います。
■No27794に返信(ぱんだこぱんださんの記事)
> もしこのような事が起きたら、皆さんならどう解決するか
> お教え下さい。よろしく御願いします。

最近、私が関わっているアプリでは、メッセージボックスのタイトルに途切れて困る内容は出していません。(アプリのタイトルなので許容できる)
タイトルはあくまで題名なのですから、本文となるメッセージ部分に改めて書くべきだとは思います。

事実上、「”保存の確認”にすればいいじゃん」に近いことです。
スペースを入れるなどの回避策で対策しても、将来の Windows で無駄になるかもしれませんし、逆に見栄えが悪くなる恐れもあります。
可能であれば、仕様を少し見直した方が良いかもしれませんね。
(立場、納期など、何らかの理由で無理な場合があるかもしれませんが…)
みなさん、ありがとうございます。

参考にさせて頂きます。
またよろしくお願いします。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板