我想创建一个MessageBox
有Yes/No按钮和一个复选框的。
该应用程序是一个图片调整器,它将一次调整多张图片的大小;在此过程中,它将检查新位置文件名是否存在,并带有覆盖它的选项。
如果需要,它将为用户提供覆盖任何新文件的选项,而如果他们想要覆盖每个文件MessageBox
,该复选框将防止必须单击Yes x次。
如何在MessageBox
对话框中添加复选框?
我想创建一个MessageBox
有Yes/No按钮和一个复选框的。
该应用程序是一个图片调整器,它将一次调整多张图片的大小;在此过程中,它将检查新位置文件名是否存在,并带有覆盖它的选项。
如果需要,它将为用户提供覆盖任何新文件的选项,而如果他们想要覆盖每个文件MessageBox
,该复选框将防止必须单击Yes x次。
如何在MessageBox
对话框中添加复选框?
创建自定义对话框。这里有一些可以给你一个想法的东西:
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?");
您不能将复选框添加到 MessageBox。正如 Tim 和 rsbarro 建议的那样,您应该创建一个自定义对话框。蒂姆的回答会很好,并且不需要创建新课程。如果你想在设计器中设计表单,你可以试试这个。
DialogResult
属性设置Yes为 Yes,将按钮的属性设置No为 No。这将让您发现用户单击了哪个按钮。public bool DoForAll
{
get { return checkBox.Checked; }
}
var options = new Options();
var result = options.ShowDialog();
if (result == DialogResult.Yes)
{
var doForAll = options.DoForAll;
}
对于vb.net(查看是这段代码,只显示一个按钮)
clsMsgBoxV1.ShowDialog("PDF solo de albaranes. (No avisarme mas)", "PDF")
并使用这个共享类:
Public Class clsMsgBoxV1
Shared prompt As Form
Shared chk As CheckBox
Public Shared Function ShowDialog(Text As String, caption As String) As Boolean
'frmUsuario
prompt = New Form()
chk = New CheckBox()
prompt.StartPosition = FormStartPosition.CenterParent
prompt.Width = 220
prompt.Height = 150
prompt.Text = caption
prompt.MinimumSize = prompt.Size
prompt.MaximumSize = prompt.Size
prompt.MaximizeBox = False
prompt.MinimizeBox = False
Dim panel As FlowLayoutPanel = New FlowLayoutPanel()
chk.Text = Text
chk.Width = chk.Width * 2
chk.Height = 50
Dim ok As Button = New Button() With {
.Text = "Leido"
}
AddHandler ok.Click, AddressOf OKClick
'Dim no As Button = New Button() With {
'.Text = "No"
'}
'AddHandler no.Click, AddressOf NoClick
ok.Width = prompt.Width - 30
panel.Controls.Add(chk)
panel.SetFlowBreak(chk, True)
panel.Controls.Add(ok)
'panel.Controls.Add(no)
prompt.Controls.Add(panel)
prompt.ShowDialog()
prompt.Dispose()
Return chk.Checked
End Function
Private Shared Sub NoClick(sender As Object, e As EventArgs)
prompt.Close()
End Sub
Private Shared Sub OKClick(sender As Object, e As EventArgs)
prompt.Close()
End Sub
End Class