筆者のubuntu環境でメッセージボックスを表示するとボタンの文字が半分見切れてしまいます。
OSのフォントのスケーリングを200%に設定しており、100%にするときちんと表示されるので、スケーリングに追随していないことが原因と思われます。
なんとなく原因なものは見つけましたが、自分には対策するスキルがないため、メッセージボックスもどきを自作してみたいと思います。
// messagebox02.cs
using System;
using System.Drawing;
using System.Windows.Forms;
/*
ビルド
mcs messagebox02.cs /r:System.Windows.Forms.dll /r:System.Drawing.dll
実行
mono messagebox02.exe
*/
class messagebox02
{
public static DialogResult MyMsgBox(string msgtext, string title)
{
Form frm = new Form
{
FormBorderStyle = FormBorderStyle.FixedDialog,
Size = new Size(400, 240),
Text = title,
};
Label lbl = new Label
{
Size = new Size(380, 80),
Location = new Point(30, 30),
Text = msgtext,
};
lbl.Parent = frm;
Button okBtn = new Button
{
Size = new Size(120,60),
Location = new Point(60, 112),
Text = "OK",
DialogResult = DialogResult.OK,
};
okBtn.Parent = frm;
Button cancelBtn = new Button
{
Size = new Size(120,60),
Location = new Point(200, 112),
Text = "Cancel",
DialogResult = DialogResult.Cancel,
};
cancelBtn.Parent = frm;
frm.AcceptButton = okBtn;
frm.CancelButton = cancelBtn;
return frm.ShowDialog();
}
public static void Main()
{
Form f = new Form();
f.Text = "迷惑道本舗";
f.BackColor = SystemColors.Window;
f.Size = new Size(800, 600);
Button button1 = new Button
{
Size = new Size(120, 60),
Location = new Point(60, 60),
Text = "押す",
};
button1.Parent = f;
button1.Click += (s, e) =>
{
//MessageBox.Show("OKまたはCancelボタンを押してください。", "MessageBox");
MyMsgBox("OKまたはCancelボタンを押してね", "MessageBox");
};
Application.Run(f);
}
}
コメント