C#のmonoでダイアログボックスでメッセージボックスもどきを作る。

コンピュータ

筆者の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);
    }

}


コメント