Tengo un formulario en una aplicación winforms. Al pulsar un botón, se carga un cuadro de mensaje modal con las opciones sí y no.

Esto está muy bien, pero cuando presiono no, quiero cerrar el cuadro de diálogo y la forma en que el botón que puso en marcha el cuadro de diálogo (el remitente) es.

Para la aplicación de la estructura es así:

Principal de la ventana de la aplicación > pulse el elemento de menú para iniciar una nueva forma (configuración de la conexión) > pulse el botón en este formulario para lanzar cuadro de mensaje.

Dos ventanas están abiertas (configuración de la conexión de la forma y del cuadro de diálogo), que me quieren tanto cerrado.

¿Cómo podría hacer esto?

InformationsquelleAutor gss11 | 2010-08-20

4 Comentarios

  1. 18

    En su sí-no formulario modal, que acaba de establecer DialogResult a No cuando usted presione el No botón, como:

    private void noButton_Click(object sender, EventArgs e)
    {
        this.DialogResult = System.Windows.Forms.DialogResult.No;
    }

    y el formulario modal, se cierra automáticamente cuando haga clic en No

    Entonces cuando se abre el formulario modal de hacer algo como esto (en la configuración de la conexión de la forma):

    var modalForm = new YesNoForm();
    if (modalForm.ShowDialog() == DialogResult.No)
    {
        this.Close(); //close the connection setup form
    }

    EDITAR

    Pensé que tu sí-no formulario modal personalizado, si se trata de un simple cuadro de mensaje, acabo de hacer:

    var dlgResult = MessageBox.Show("Yes or no ?","?",MessageBoxButtons.YesNo);
    if(dlgResult == System.Windows.Forms.DialogResult.No)
    {
        this.Close(); //close the connection setup form
    }

    como ya se ha sugerido en otras respuestas

  2. 2

    Algo como esto:

    DialogResult result = MessageBox.Show("dialog", "modal", MessageBoxButtons.YesNo);
    if (result == DialogResult.No)
    {
          this.Close();
    }

    Para personalizar los cuadros de diálogo modales código será similar.

  3. 2
     private void newToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (richTextBox1.Text != "")
            {
    
                if (DialogResult.Yes == MessageBox.Show(("Do you want to save changes to Untiteled"), "Notepad", MessageBoxButtons.YesNoCancel))
                {
    
                    saveFileDialog1.ShowDialog();
                    FileStream fs = new FileStream(saveFileDialog1.FileName + ".txt", FileMode.Append);
                    StreamWriter sw = new StreamWriter(fs);
                    sw.WriteLine(richTextBox1.Text);
                    sw.Close();
                    fs.Close();
    
                }
                else if (DialogResult.No == MessageBox.Show(("Do you want to save changes to Untiteled"), "Notepad", MessageBoxButtons.YesNoCancel))
                {
    
                    richTextBox1.Clear();
    
                }
                else if (DialogResult.Cancel == MessageBox.Show(("Do you want to save changes to Untiteled"), "Notepad", MessageBoxButtons.YesNoCancel))
                {
    
    
                     ***//when i click on cancel button...the dialogbox should be close??????????????????????***
                }
    
            }
            else
            { 
                richTextBox1.Clear(); 
            }
    
        }
  4. 0

    No sé si C# tiene el mismo comportamiento, pero en Java puedo modificar el constructor de la caja de mensaje, y pasar una referencia al remitente forma.

    MBox1 = New MBox(ParentForm sender);

    A continuación, en el cuadro de mensaje que usted puede hacer:

    sender.close(); //or whatever
    this.close();

    Los ejemplos son más «pseudocódigo-like» pero espero que ayude

Dejar respuesta

Please enter your comment!
Please enter your name here