MessageBoxのアイコンの指定を調べるために、こんなサンプルを作ってみました。
(ヘルプは、今回は使わないから調べませんでした。)
で、WindowsVistaHomePremiumで動かしてみてわかったこと。
・MessageBoxで×ボタンが表示される場合は、以下のボタン表示のときで、×ボタンが押されたら、
一番最後のボタンが押されたものと同じ。
OK
OKCancel
YesNoCancel
・×ボタンが表示されているときに限りEscキーで戻ることができ、その場合、戻り値が×ボタンを押したときと同じ。
・オプション指定が、DefaultDesktopOnlyやServiceNotificationの場合、MessageBox終了後、呼び出し元のウィンドウにはフォーカスが戻らない。
・アイコン指定は、Error,Hand,Stopは同じ値が振られているため同じ動きをしており、ExclamationとWarningも同じ、InformationとAsteriskも同じ。そもそもMessageBoxIcon.Error.ToString()や、MessageBoxIcon.Stop.ToString()をやっても"Hand"が返ってくる。(MessageBoxIcon.Exclamation.ToString()は"Warning",MessageBox.Information.ToString()は"Asterisk")
・(使うことはないが)オプション指定が、RtlReadingの場合、以下のように表示がわけがわからない。
1.タイトルは右寄せ、表示文字はそのままの順(逆順に表示されることはない。)
2.ウィンドウ内のアイコンは、(通常の左ではなく)右に表示される。
3.ウィンドウ内の文字は、左寄せで表示される。表示文字はそのままの順。
4.ボタンは、順序が逆転し()の変化が微妙でYesNoCancelを選んだ場合は以下のようになる。
4-1:通常時:はい(Y),いいえ(N),キャンセル
4.2:RtlReading選択時:キャンセル,(Nいいえ(,(Yはい(
5.×ボタンが左に来ている。
ServiceNotificationを選んだ場合、
RtlReadingを選んだ場合、
なおサンプルに使ったデザインとプログラムは、
デザインはこんな感じ。
プログラムはこんな感じ。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
foreach (MessageBoxButtons b in Enum.GetValues(typeof(MessageBoxButtons))) listBox1.Items.Add(b);
foreach (string s in Enum.GetNames(typeof(MessageBoxIcon))) listBox2.Items.Add(s);
foreach (MessageBoxOptions o in Enum.GetValues(typeof(MessageBoxOptions))) listBox3.Items.Add(o);
listBox1.SelectedIndex = 0;
listBox2.SelectedIndex = 0;
listBox3.SelectedIndex = 0;
}
private void button1_Click(object sender, EventArgs e)
{
MessageBoxButtons b = ((MessageBoxButtons)listBox1.SelectedItem);
MessageBoxIcon i = ((MessageBoxIcon)new EnumConverter(typeof(MessageBoxIcon)).ConvertFromString(listBox2.SelectedItem.ToString()));
MessageBoxOptions o = ((MessageBoxOptions)listBox3.SelectedItem);
label1.Text = MessageBox.Show(
b.ToString()+Environment.NewLine+i.ToString()+Environment.NewLine+o.ToString(),
"MessageBoxテスト",b,i,MessageBoxDefaultButton.Button1,o).ToString();
}
}
}
0 件のコメント:
コメントを投稿