c# - visual - ¿Cómo mostrar un MessageBox con una casilla de verificación?
messageboxbuttons (3)
Me gustaría crear un MessageBox
que tenga botones Sí / No Y una casilla de verificación.
La aplicación es un cambio de tamaño de la imagen y se volverá a cambiar el tamaño de una serie de imágenes a la vez; en el proceso, comprobará si existe el nuevo nombre de archivo de ubicación con la opción de sobrescribirlo.
El MessageBox
le dará al usuario la opción de sobrescribir cualquier archivo nuevo si así lo desea, mientras que la casilla de verificación evitará tener que hacer clic en Sí x número de veces si desea sobrescribir cada archivo.
¿Cómo agrego una casilla de verificación a un diálogo de cuadro de MessageBox
?
Crea un diálogo personalizado Aquí hay algo que podría darte una idea:
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;
}
}
Puedes usarlo de esta manera:
bool overwrite = CheckboxDialog.ShowDialog("overwrite", "Overwrite location?");
No puede agregar una casilla de verificación a un MessageBox. Como sugieren Tim y rsbarro, debe crear un cuadro de diálogo personalizado. La respuesta de Tim funcionará bien y no requiere la creación de una nueva clase. Si desea diseñar el formulario en el diseñador, puede intentarlo.
- Crea un nuevo formulario con los dos botones y la casilla de verificación que necesitarás.
- En el diseñador de formularios, establezca la propiedad
DialogResult
del botón Sí en Sí y la del botón No en No. Esto le permitirá descubrir en qué botón hizo clic el usuario. - Cree una propiedad en el formulario que refleje el estado de la casilla de verificación (opcional: no me gusta hacer referencia a un control en un formulario de otro formulario, pero si activa la casilla de verificación, eso también funcionará).
public bool DoForAll
{
get { return checkBox.Checked; }
}
- En su formulario principal, muestre el formulario secundario cuando sea necesario. Por ejemplo:
var options = new Options();
var result = options.ShowDialog();
if (result == DialogResult.Yes)
{
var doForAll = options.DoForAll;
}
Pruebe esto Usar la clase MsgBoxCheck es tan simple como usar el MessageBox de Windows. Primero, agregue una referencia a MsgBoxCheck.dll en su proyecto de C #. La mayoría de las personas invocará la clase de la siguiente manera:
MsgBoxCheck.MessageBox dlg = new MsgBoxCheck.MessageBox();
DialogResult dr =
dlg.Show(@"Software/PricklySoft/TestMsgBoxCheck",
"DontShowAgain",DialogResult.OK,
"Don''t ask me this again",
"Now is the time for all good men to check this message box",
"Hello",
MessageBoxButtons.OK, MessageBoxIcon.Information);