在winform的设计中调出控件(Windows Media Player)
1.在工具箱中右击空白处 选择选项:选择项
2.点击上方栏目的COM 下滑找到Windows Media Player控件 在左边的复选框中勾上 然后确定
3.以后就能在工具箱中找到这个控件了(Windows Media Player)
摆设控件
建议将属性里的Dock属性(绑定到容器边框)设置为fill绑定到中心 这样不管窗口如何缩放 视频控件依然能处于中心(视频控件做该窗口的大主体情况下) 但视频是不会被缩放比例的 无需担心
本地的视频播放
通过this axWindowsMediaPlayer1 的属性URL来确定要播放的视频文件路径指定 然后调用播放器进行播放该变量属性对应的路径文件
this.axWindowsMediaPlayer1.URL ="D/:路径/视频路径";//设置选中文件的路径为播放路径
this.axWindowsMediaPlayer1.Ctlcontrols.play();//播放
不过只通过这样的话是写死的 运行程序的时候就只能播放原定写好路径的视频的 可以通过写一个打开文件的类 来灵活的对控件WindowsMediaPlayer的url属性进行更改替换 以便达到灵活的播放本地视频文件
写一个按钮点击事件
我个人在这用的是导航栏按钮 比较美观好用
private void dk_Click_1(object sender, EventArgs e)
{
OpenFileDialog filename = new OpenFileDialog(); //定义打开文件
filename.InitialDirectory = "D:"; //初始路径,这里设置的是程序的起始位置,可自由设置
filename.Filter = "|*.mp4";//设置打开类型,设置个*.*和*.txt就行了
filename.ShowDialog();//调用 打开文件
this.axWindowsMediaPlayer1.URL = filename.FileName.ToString();//设置选中文件的路径为播放路径
this.axWindowsMediaPlayer1.Ctlcontrols.play();//播放
this.xx1.SelectedText ="正在播放:"+filename.SafeFileName;
}
对于打开文件这个类的一些基础相关用法 进行filename的一些常规属性设置
将选中文件路径赋值给播放器的url路径
对播放器的小处理
可以单独写个播放按钮 在未选定视频播放链接时弹出提示 并且打开文件 这里我写在了右键任务栏图标中
播放错误
判断播放路径是否为空
提示之后调用打开文件的事件函数
private void 播放ToolStripMenuItem_Click(object sender, EventArgs e)
{
if(this.axWindowsMediaPlayer1.URL !="")
this.axWindowsMediaPlayer1.Ctlcontrols.play();
else
{
MessageBox.Show("您还未打开文件哦");
dk_Click_1(sender, e);
}
}
右键菜单栏其它点击事件
就是写写简单的调用与关闭
private void 关闭ToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Close();
}
private void 打开ToolStripMenuItem1_Click(object sender, EventArgs e)
{
dk_Click_1(sender, e);
}
默认播放列表
可以写一些默认的播放列表 但连同视频打包的话要记得写的是相对路径而不是绝对路径(要记得把视频文件和程序一起打包 不过不建议这么做)
private void 夜兰中记ToolStripMenuItem_Click(object sender, EventArgs e)
{
this.axWindowsMediaPlayer1.URL = @"D:\原H\Yelan EX 【CN】.mp4";
this.axWindowsMediaPlayer1.Ctlcontrols.play();
this.xx1.SelectedText = "正在播放:" + "叶兰中记";
}
private void 优菈酒馆ToolStripMenuItem_Click(object sender, EventArgs e)
{
this.axWindowsMediaPlayer1.URL = @"D:\原H\原神 优菈酒馆\「国创同人」「AKT」EX 原神 优菈酒馆.mp4";
this.axWindowsMediaPlayer1.Ctlcontrols.play();
this.xx1.SelectedText = "正在播放:" + "尤菈";
}
大致就是写点击按钮后 把对应写死的文件路径赋值给播放器的url路径 从而达到拥有一个默认播放列表的效果 还可以加上标题
总结(附源码)
在winform中使用这个视频控件Windows Media Player大致是在窗体应用中达到最简单实现的办法之一 简单易操作 不过也无法更改它的外观和拥有更多的可用性 总而言之需要进行简单的视频播放实现 这个自带的Windows Media Player的控件实现效果大致足够了 最后附上一下这个窗口的源码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
namespace WindowsFcg
{
public partial class Form4 : Form
{
public Form4()
{
InitializeComponent();
}
private void Form4_Load(object sender, EventArgs e)
{
}
private void Form4_FormClosed(object sender, FormClosedEventArgs e)
{
Application.Exit();
}
private void 夜兰中记ToolStripMenuItem_Click(object sender, EventArgs e)
{
this.axWindowsMediaPlayer1.URL = @"D:\原H\Yelan EX 【CN】.mp4";
this.axWindowsMediaPlayer1.Ctlcontrols.play();
this.xx1.SelectedText = "正在播放:" + "叶兰中记";
}
private void 优菈酒馆ToolStripMenuItem_Click(object sender, EventArgs e)
{
this.axWindowsMediaPlayer1.URL = @"D:\原H\原神 优菈酒馆\「国创同人」「AKT」EX 原神 优菈酒馆.mp4";
this.axWindowsMediaPlayer1.Ctlcontrols.play();
this.xx1.SelectedText = "正在播放:" + "尤菈";
}
private void dk_Click_1(object sender, EventArgs e)
{
OpenFileDialog filename = new OpenFileDialog(); //定义打开文件
filename.InitialDirectory = "D:"; //初始路径,这里设置的是程序的起始位置,可自由设置
filename.Filter = "|*.mp4";//设置打开类型,设置个*.*和*.txt就行了
filename.ShowDialog();//调用 打开文件
this.axWindowsMediaPlayer1.URL = filename.FileName.ToString();//设置选中文件的路径为播放路径
this.axWindowsMediaPlayer1.Ctlcontrols.play();//播放
this.xx1.SelectedText ="正在播放:"+filename.SafeFileName;
}
private void 播放ToolStripMenuItem_Click(object sender, EventArgs e)
{
if(this.axWindowsMediaPlayer1.URL !="")
this.axWindowsMediaPlayer1.Ctlcontrols.play();
else
{
MessageBox.Show("您还未打开文件哦");
dk_Click_1(sender, e);
}
}
private void 关闭ToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Close();
}
private void 打开ToolStripMenuItem1_Click(object sender, EventArgs e)
{
dk_Click_1(sender, e);
}
private void 消息ToolStripMenuItem_Click(object sender, EventArgs e)
{
this.notifyIcon1.BalloonTipText = this.xx1.Text;
}
private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
{
}
private void xx1_TextChanged(object sender, EventArgs e)
{
}
}
}