当前位置: 首页 > article >正文

C# 拖入文件 只能拖入txt文件

要实现只能将 .txt 文件拖入 Button 控件(如 button1)并获取其路径,可以在之前的基础上添加文件类型的检查逻辑。以下是具体实现步骤和示例代码:

1. 创建 Windows Forms 项目

打开 Visual Studio,创建一个新的 Windows Forms 应用程序项目。

2. 设计界面

在窗体上添加一个 Button 控件,将其命名为 button1

3. 编写代码

using System;
using System.IO;
using System.Windows.Forms;

namespace DragTxtFileToButton
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            // 启用按钮的拖放功能
            button1.AllowDrop = true;

            // 订阅拖放相关事件
            button1.DragEnter += Button1_DragEnter;
            button1.DragDrop += Button1_DragDrop;
        }

        private void Button1_DragEnter(object sender, DragEventArgs e)
        {
            // 检查拖入的数据是否包含文件
            if (e.Data.GetDataPresent(DataFormats.FileDrop))
            {
                string[] filePaths = (string[])e.Data.GetData(DataFormats.FileDrop);
                bool allTxtFiles = true;

                // 检查每个文件是否为 .txt 文件
                foreach (string filePath in filePaths)
                {
                    if (Path.GetExtension(filePath).ToLower() != ".txt")
                    {
                        allTxtFiles = false;
                        break;
                    }
                }

                if (allTxtFiles)
                {
                    // 允许拖放操作
                    e.Effect = DragDropEffects.Copy;
                }
                else
                {
                    // 不允许拖放操作
                    e.Effect = DragDropEffects.None;
                }
            }
            else
            {
                // 不允许拖放操作
                e.Effect = DragDropEffects.None;
            }
        }

        private void Button1_DragDrop(object sender, DragEventArgs e)
        {
            // 获取拖放的文件路径
            string[] filePaths = (string[])e.Data.GetData(DataFormats.FileDrop);

            if (filePaths != null && filePaths.Length > 0)
            {
                foreach (string filePath in filePaths)
                {
                    // 检查文件是否存在且为 .txt 文件
                    if (File.Exists(filePath) && Path.GetExtension(filePath).ToLower() == ".txt")
                    {
                        // 显示文件路径
                        MessageBox.Show($"你拖入的 .txt 文件路径是:{filePath}");
                    }
                    else
                    {
                        MessageBox.Show($"文件 {filePath} 不是有效的 .txt 文件或不存在。");
                    }
                }
            }
        }
    }
}


http://www.kler.cn/a/520820.html

相关文章:

  • 【C语言练习题】正弦函数
  • Effective Objective-C 2.0 读书笔记—— objc_msgSend
  • 【Linux系统】计算机世界的基石:冯诺依曼架构与操作系统设计
  • Crawl4AI 人工智能自动采集数据
  • 后端面试题分享第一弹(状态码、进程线程、TCPUDP)
  • 如何建设一个企业级的数据湖
  • 性能优化案例:通过合理设置spark.default.parallelism参数的值来优化PySpark程序的性能
  • 白嫖一个可以公网访问、带评论和图床的博客系统
  • MySQL的复制
  • 【git】进阶使用,自存档
  • 嵌入式蓝桥杯电子赛嵌入式(第14届国赛真题)总结
  • 笔灵ai写作技术浅析(二):自然语言处理
  • 【开发日记】微信小程序getBackgroundAudioManager播放背景音乐提示播放失败
  • 每日一题-判断是不是二叉搜索树
  • 【Linux】自动化构建-make/Makefile
  • linux naive代理设置
  • 解决.NET程序通过网盘传到Linux和macOS不能运行的问题
  • GIS与相关专业软件汇总
  • “腾讯、钉钉、飞书” 会议开源平替,免费功能强大
  • 一文读懂 HTTP:Web 数据交换的基石
  • Solon Cloud Gateway 开发:熟悉 ExContext 及相关接口
  • Doris Schema Change 常见问题分析
  • AF3 FourierEmbedding类源码解读
  • Windows 靶机常见服务、端口及枚举工具与方法全解析:SMB、LDAP、NFS、RDP、WinRM、DNS
  • ListOJ13:环形链表(判断是否为环形链表)
  • 在亚马逊云科技上使用Luma AI Ray2视频模型生成炫酷视频 (下)