如何永久隐藏C#中Windows Media Player控件的错误提示框
隐藏Windows Media Player错误提示框的解决方案
核心思路
捕获Windows Media Player的错误事件,阻止默认错误提示框弹出,并自动重试请求(已知首次请求失败、第二次即可正常运行)。
具体步骤与代码修改
- 添加重试控制变量
在Form1类顶部添加两个私有变量,用于记录当前播放地址和重试次数:
private int _retryCount = 0; private string _currentPlayUrl = string.Empty;
- 添加错误事件处理逻辑
给axWindowsMediaPlayer1绑定错误事件,处理首次请求失败的情况:
private void axWindowsMediaPlayer1_Error(object sender, AxWMPLib._WMPOCXEvents_ErrorEvent e) { // 阻止系统默认错误提示框弹出 e.cancelDisplay = true; // 最多重试1次(匹配你的场景) if (_retryCount < 1 && !string.IsNullOrEmpty(_currentPlayUrl)) { _retryCount++; // 重新发起播放请求 axWindowsMediaPlayer1.URL = _currentPlayUrl; axWindowsMediaPlayer1.Ctlcontrols.play(); } else if (_retryCount >= 1) { // 重试失败后提示用户 MessageBox.Show("播放失败,请稍后重试", "提示", MessageBoxButtons.OK); _retryCount = 0; // 重置计数,方便下次操作 } }
- 修改按钮点击事件
调整所有播放按钮的逻辑,更新当前播放地址并重置重试计数,同时移除原来的错误提示弹窗:
以button1_Click_1为例,button4_Click、button6_Click做同样修改:
private void button1_Click_1(object sender, EventArgs e) { _currentPlayUrl = "http://y0b.net/radiosa.m3u"; _retryCount = 0; axWindowsMediaPlayer1.URL = _currentPlayUrl; axWindowsMediaPlayer1.Ctlcontrols.play(); label2.Text = "Playing Radio SA"; }
- 绑定错误事件(可选)
如果不会通过设计器绑定事件,可在Form构造函数里手动绑定:
public Form1() { InitializeComponent(); axWindowsMediaPlayer1.Error += axWindowsMediaPlayer1_Error; }
效果说明
修改完成后,首次请求失败时不会弹出系统默认的错误提示框,程序会自动重试一次;若重试仍失败,才会弹出自定义提示。
内容的提问来源于stack exchange,提问作者Adit Gadkary
相关产品推荐
相关产品推荐

