如何显示带复选框的MessageBox?

时间:2013-06-30 00:17:22

标签: c# checkbox messagebox

我想创建一个{k}包含 / 按钮的MessageBox和一个复选框。

该应用程序是一个图片缩放器,它将同时重新调整大量图片的大小;在此过程中,它将检查新的位置文件名是否存在,并带有覆盖它的选项。

如果需要,MessageBox将为用户提供覆盖任何新文件的选项,而复选框将阻止必须单击 x 次数如果他们想要覆盖每个文件。

如何在MessageBox对话框中添加复选框?

2 个答案:

答案 0 :(得分:16)

创建自定义对话框。这可以给你一个想法:

public static class CheckboxDialog
{   
    public static bool ShowDialog(string text, string caption)
    {
        Form prompt = new Form();
        prompt.Width = 180;
        prompt.Height = 100;
        prompt.Text = caption;
        FlowLayoutPanel panel = new FlowLayoutPanel();
        CheckBox chk = new CheckBox();
        chk.Text = text;
        Button ok = new Button() { Text = "Yes" };
        ok.Click += (sender, e) => { prompt.Close(); };
        Button no = new Button() { Text = "No" };
        no.Click += (sender, e) => { prompt.Close(); };
        panel.Controls.Add(chk);
        panel.SetFlowBreak(chk, true);
        panel.Controls.Add(ok);
        panel.Controls.Add(no);
        prompt.Controls.Add(panel);
        prompt.ShowDialog();
        return chk.Checked;
    }
}

您可以这样使用它:

bool overwrite = CheckboxDialog.ShowDialog("overwrite", "Overwrite location?");

答案 1 :(得分:15)

您无法向MessageBox添加复选框。正如蒂姆和rsbarro建议的那样,你应该创建一个自定义对话框。蒂姆的答案很有效,并且不需要创建新课程。如果你想在设计师中设计表单,你可以试试这个。

  • 使用两个按钮和您需要的复选框创建一个新表单。
  • 在表单设计器中,将按钮的DialogResult属性设置为是,将按钮的属性设置为否。这将让你会发现用户点击的按钮。
  • 在表单上创建一个反映复选框状态的属性(可选 - 我不喜欢从另一个表单引用一个表单上的控件,但如果你将复选框公开,那也会起作用)。
public bool DoForAll
{
    get { return checkBox.Checked; }
}
  • 在主表单上,在需要时显示子表单。例如:
var options = new Options();
var result = options.ShowDialog();
if (result == DialogResult.Yes)
{
    var doForAll = options.DoForAll;
}