首页 > 编程语言 >用C#写一个随机音乐播放器

用C#写一个随机音乐播放器

时间:2024-08-24 15:24:42浏览次数:12  
标签:播放器 files string C# void Form1 文件夹 随机 folderPath

form1中namespce里的代码如下

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        string folder = textBox1.Text;
        string folderPath = @folder; // 指定音频文件所在的文件夹路径
        OpenRandomFile(folderPath);
    }

    private void Form1_Load(object sender, EventArgs e)
    {

    }
    //实际是随机打开一个文件,鉴于VS内置的库不能播放除了wav以外的音频
    private void OpenRandomFile(string folderPath)
    {
        if (!Directory.Exists(folderPath))
        {
            MessageBox.Show("指定的文件夹不存在,请检查路径是否正确。");
            return;
        }

        var files = Directory.GetFiles(folderPath, "*.*", SearchOption.AllDirectories);
        if (files.Length == 0)
        {
            MessageBox.Show("文件夹为空或没有可访问的文件。");
            return;
        }

        Random random = new Random();
        int index = random.Next(files.Length);
        string filePath = files[index];

        try
        {
            System.Diagnostics.Process.Start(filePath);
        }
        catch (Exception ex)
        {
            MessageBox.Show($"无法打开文件: {ex.Message}");
        }
    }
}

实际是随机打开一个文件,鉴于VS内置的库不能播放除了wav以外的音频

效果如图

这里的文件夹地址是直接Ctrl+Shift+C复制过来的,注意要去掉引号

exe的链接如下

链接:https://pan.baidu.com/s/105w5fij6kkrUoWcjMuiBWA?pwd=tdo7 
提取码:tdo7

标签:播放器,files,string,C#,void,Form1,文件夹,随机,folderPath
From: https://blog.csdn.net/2301_76273740/article/details/141323078

相关文章

  • Docker中镜像文件的打包传输、容器导出镜像及虚拟机端口映射的实现
    内网私有仓库1、Docker私有仓库是集中存放镜像的地⽅,⽽注册服务器(Registry)是存放仓库的具体服务器。仓库可以被认为是⼀个具体的项⽬或⽬录。Docker公共仓库:https://hub.docker.com2、Docker私有仓库的作⽤:1)镜像上传到公共仓库不⽅便管理,且仅需要局域⽹⽤户之间传递......
  • 从零开始学习C++之函数
    前言作者看着200行的主函数大模拟返回了WA,陷入了沉思......咋办?把每个模块包装一下就知道哪里出错了,所以,今天讲函数。(太生硬了吧。。。)定义一个函数格式:返回值类型函数名(变量*n){ 代码}例如:intadd(inta,intb){ returna+b;}注:定义函数中的每个变量必......
  • 从零开始学习C++
    updateon2024/8/24前言配置环境基本编码格式入门输入输出循环变量与数组if判断语句(分支结构)基础函数......
  • <architecture>-linux-gnu-gcc
    ./configure--enable-win64yuminstalllibstdc++-*.i686yuminstallglibc-*.i686yuminstalllibgcc.i686sudodpkg--add-architecturei386sudoaptupdate安装相应的32位库,库名后面加上:i386,比如libc6:i386,libstdc++6:i386,libncurses5:i386sudodpkg--add-architec......
  • 053、Vue3+TypeScript基础,页面通讯之$attrs的使用
    01、main.js代码如下://引入createApp用于创建Vue实例import{createApp}from'vue'//引入App.vue根组件importAppfrom'./App.vue'//引入emitter用于全局事件总线//importemitterfrom'@/utils/emitter'constapp=createApp(App);//App.vue的根元素id为......
  • Android开发 - IBinder 类实现跨进程通信(IPC)解析
    什么是IBinderIBinder类是一个重要的接口,常用于实现跨进程通信(IPC);IBinder允许不同的进程或组件之间相互传递数据和调用方法。主要用于实现进程间通信。它是Android中的一个底层机制,允许不同的应用或组件(即使它们在不同的进程中)通过IBinder对象进行数据交换和方法调用IB......
  • [CSP-J 2023] 小苹果
    第一道题居然让我做了20分钟!题目大意每次从第一个开始取,每隔两个数取一次,问去的次数和取出\(n\)的次数。思路想不到怎么办,那就在草稿纸上列下样例找思路:12345678第一次取147;第二次取26;第三次取3;第四次取5;第五次取8。规律不就出来了吗:每次取出的数......
  • AI工具 GPT 学术优化 (GPT Academic) 安装实践
     GPT学术优化(GPTAcademic)是一个综合的AIGPT工具包,可以完成各种gpt辅助的工作,比如代码解读、翻译、读论文等功能。官网:GitHub-binary-husky/gpt_academic:为GPT/GLM等LLM大语言模型提供实用化交互接口,特别优化论文阅读/润色/写作体验,模块化设计,支持自定义快捷按钮&函......
  • 埃筛C++写法
    埃筛的作用是找素数(质数),以质数的倍数一定是合数为重心思路。比如说2是质数,但2的倍数(除了自己)都是合数。3是质数,但3的倍数(除了自己)都是合数。我们针对这个特性,可以用打标法实现。p[x]表示x是否为质数。voidPrime(){ memset(P,true,sizeof(P)); for(inti......
  • CSP 2023 提高级第一轮 CSP-S 2023初试题 程序阅读第三题解析
    一、程序阅读#include<vector>#include<algorithm>#include<iostream>usingnamespacestd;boolf0(vector<int>&a,intm,intk){ints=0;for(inti=0,j=0;i<a.size();i++){while(a[i]-a[j]>......