MessageBox 根据事件播放不同的铃声

Posted

技术标签:

【中文标题】MessageBox 根据事件播放不同的铃声【英文标题】:MessageBox plays different chimes depending on event 【发布时间】:2018-07-27 17:03:23 【问题描述】:

我正在显示DevExpress.XtraEditors.XtraMessageBox 以提醒用户发生了错误。方法如下:

private void TryToExit()

    if (ERROR OCCURRED)
    
        DevExpress.XtraEditors.XtraMessageBox.Show("Name already in use!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        // Focus the textbox so its text can be selected
        nameTextBox.Focus();
        nameTextBox.SelectAll();
    
    else
    
        Close();
    

有两种场景可以调用该方法:

1 表单上的确定按钮被按下:

private void OkButton_Click(object sender, EventArgs e)

    TryToExit();

2 用户在文本框中按回车键

private void NameTextBox_KeyDown(object sender, KeyEventArgs e)

    if (nameTextBox.Focused)
    
        // Try to close the dialog if the user hits the return key
        if (e.KeyCode == Keys.Return)
        
            TryToExit();
            e.SuppressKeyPress = true;
        
    

当我在第一个场景(确定按钮)中调用TryToExit() 时,消息框会播放声音Windows Foreground.wav,但是当我从第二个场景(返回键)中调用TryToExit() 时,消息框会播放声音Windows Background.wav。两种不同的声音如何播放有点烦人,我想知道是否有办法确保在任何一种情况下播放相同的声音效果。

【问题讨论】:

见Disable beep of enter and escape key c# @LarsTech 谢谢,BeginInvoke() 成功了。 【参考方案1】:

解决方案是使用BeginInvoke()作为消息框。

BeginInvoke(new Action(() => DevExpress.XtraEditors.XtraMessageBox.Show(...));

查看this answer的评论

【讨论】:

以上是关于MessageBox 根据事件播放不同的铃声的主要内容,如果未能解决你的问题,请参考以下文章

怎么用易语言做一个闹钟,就是怎么实现到了某个时间,程序播放设定铃声的

如何以编程方式播放默认电话铃声?

iPhone:如何播放忽略音量和铃声开关设置的声音?

播放默认铃声

无法使用滑块按钮播放/停止铃声

“未引发语音假设事件”