MessageBox (zu zweitem Formular gehörig) macht keinen Beep

  • C#
  • .NET (FX) 4.5–4.8

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Bartosz.

    MessageBox (zu zweitem Formular gehörig) macht keinen Beep

    Hallo,
    ich habe heute ein ungewöhnliches Problem.

    Auf FormMain wird ein Button
    Button_edit geklickt. Seine Methode instanziert eine neue Instanz des Formulars FormEdit. Dieses wird mit ShowDialog(this) aufgerufen.

    In
    FormEdit kann man den Button Button_remove drücken. Hier wird eine MessageBox aufgerufen, die fragt, ob man sich sicher ist, das Produkt löschen zu wollen. Diese MessageBox spielt keinen Ton ab. Ich habe hier und hier schon gelesen, dass man die Überladung
    Show(IWin32Window, String, String, MessageBoxButtons, MessageBoxIcon)
    verwenden kann. Leider bringt das keinen Erfolg. Man findet bei Google auch nur Threads, in denen jemand will, dass kein Ton mehr abgespielt wird. :|

    Was machen?

    Dies ist der gekürzte Sourcecode.

    in FormMain.cs

    C#-Quellcode

    1. private void Button_edit_Click(object sender, EventArgs e)
    2. {
    3. using (FormEdit FE = new FormEdit())
    4. {
    5. switch (FE.ShowDialog(this))
    6. {
    7. case DialogResult.OK: // Produkteigenschaften wurden geändert, zum Beispiel Text geändert oder ein Bild hinzugefügt.
    8. if (FE.A_property_has_been_changed) // Es geht darum, dass die ListBox nur aktualisiert wird, wenn tatsächlich etwas geändert wurde. So wird unnötiges „Flackern“ vermieden.
    9. {
    10. UpdateListbox();
    11. }
    12. break;
    13. case DialogResult.No: // Produkt wurde gelöscht. Die Bilder wurden bereits im Formular disposed.
    14. UpdateListbox();
    15. return;
    16. default:
    17. break;
    18. }
    19. }
    20. }


    in FormEdit.cs

    C#-Quellcode

    1. private void Button_remove_Click(object sender, EventArgs e)
    2. {
    3. if (MessageBox.Show(this, "Sind Sie sicher, dass Sie das Produkt löschen wollen?", "Produkt bearbeiten", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
    4. {
    5. this.DialogResult = DialogResult.No;
    6. }
    7. }
    @Bartosz Teste einfach mal alle Möglichkeiten durch: ;)

    C#-Quellcode

    1. MessageBox.Show("None", "None", MessageBoxButtons.OK, MessageBoxIcon.None);
    2. MessageBox.Show("Hand,Stop,Error", "Hand,Stop,Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
    3. MessageBox.Show("Question", "Question", MessageBoxButtons.OK, MessageBoxIcon.Question);
    4. MessageBox.Show("Exclamation,Warning", "Exclamation,Warning", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
    5. MessageBox.Show("Asterisk,Information", "Asterisk,Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!