Центрирование кнопки ОК в MessageBox в winforms

Я изучаю C#, и как часть этого я написал небольшое приложение, которое состоит из формы с двумя группами кнопок, по две кнопки в каждой. Также добавлена ​​кнопка для закрытия приложения. И все работает нормально. Также есть MessageBox, показывающий, что приложение будет закрыто. И вот небольшая проблема, которая меня беспокоит: кнопка OK в этом MessageBox НЕ центрирована горизонтально. Я предполагаю, что есть метод для выравнивания этой кнопки, но что меня удивляет, почему она не центрирована по умолчанию? В качестве иллюстрации здесь приведены скриншоты:

Форма с переключателями

MessageBox с кнопкой ОК

Вот и код:

using System;
using System.Drawing;
using System.Windows.Forms;

public class myForm : Form
{
    private GroupBox gboxGrp1;
    private GroupBox gboxGrp2;

    private RadioButton butn1a;
    private RadioButton butn1b;
    private RadioButton butn2a;
    private RadioButton butn2b;
    private Button btnClose;

    public myForm()
    {
        InitializeComponent();
    }

    private void InitializeComponent()
    {
        this.btnClose = new Button();

        this.gboxGrp1 = new GroupBox();
        this.gboxGrp2 = new GroupBox();

        this.butn1a = new RadioButton();
        this.butn1b = new RadioButton();
        this.butn2a = new RadioButton();
        this.butn2b = new RadioButton();

        //myForm
        this.Text = "My Form";
        this.StartPosition = FormStartPosition.CenterScreen;
        this.Height = 350;
        this.Width = 200;

        //btnClose
        this.Controls.Add(btnClose);
        this.btnClose.Text = "Close";
        this.btnClose.Location = new Point(60, 260);
        this.btnClose.Click += new EventHandler(btnClose_Click);

        //gboxgrp1
        this.gboxGrp1.Location = new Point(20, 20);
        this.gboxGrp1.Text = "Group Box 1";
        this.gboxGrp1.Width = 150;
        this.gboxGrp1.Height = 100;

        //gboxgrp2
        this.gboxGrp2.Text = "Group Box 2";
        this.gboxGrp2.Location = new Point(20, 130);
        this.gboxGrp2.Width = 150;
        this.gboxGrp2.Height = 100;

        //Radio buttons
        this.butn1a.Text = "Radio 1a";
        this.butn1a.Location = new Point(30, 30);
        this.butn1a.Size = new Size(90, 15);

        this.butn1b.Text = "Radio 1b";
        this.butn1b.Location = new Point(30, 60);
        this.butn1b.Size = new Size(90, 15);

        this.butn2a.Text = "Radio 2a";
        this.butn2a.Location = new Point(30, 30);
        this.butn2a.Size = new Size(90, 15);

        this.butn2b.Text = "Radio 2b";
        this.butn2b.Location = new Point(30, 70);
        this.butn2b.Size = new Size(90, 15);

        //Controls
        this.Controls.Add(gboxGrp1);
        this.Controls.Add(gboxGrp2);

        this.gboxGrp1.Controls.Add(butn1a);
        this.gboxGrp1.Controls.Add(butn1b);
        this.gboxGrp2.Controls.Add(butn2a);
        this.gboxGrp2.Controls.Add(butn2b);
    }

    private void btnClose_Click(object sender, EventArgs e)
    {
        MessageBox.Show("Closing Application");
        Application.Exit();
    }
}

public class MyApp
{
    public static void Main()
    {
        Application.Run(new myForm());
    }
}

1 ответ

Решение

Вы не можете изменить стиль MessageBox по умолчанию, так как это полностью зависит от темы ОС Windows. Однако вы можете создать собственное окно сообщения, просто создав новую форму, а затем вызвать ее с помощью newMessagebox.ShowDialog();

Другие вопросы по тегам