使用C#.Net仅允许在文本框上拖放文本文件

Ind*_*igo 3 c# drag-and-drop winforms

我正在使用Windows窗体应用程序.

TextBox控件上的一个拖放操作期间,我想限制用户只提供一个文本文件.

// drag drop module for input text file in textbox starts here
private void textBoxInputTextFile_DragEnter(object sender, DragEventArgs e)
{
    if (e.Data.GetDataPresent(DataFormats.FileDrop))
        e.Effect = DragDropEffects.Copy;
    else
        e.Effect = DragDropEffects.None;
}

private void textBoxInputTextFile_DragDrop(object sender, DragEventArgs e)
{
    if(e.Data.GetData(DataFormats.FileDrop, true))
    {
    // Check if it is a text file
    // Okay if it is a text file or else give an error message
    }
}
Run Code Online (Sandbox Code Playgroud)

此代码只是我之前的文件夹放置操作的示例,但现在我想将其限制为只有一个文件,而且也必须是文本文件.因此,当drop动作发生时,它应首先检查它是否是文本文件然后再做其他事情.

我怎么做?

Bri*_*dge 6

写在我的头顶(未经测试):

var files = (string[])e.Data.GetData(DataFormats.FileDrop);

foreach(var file in files)
{
    if(System.IO.Path.GetExtension(file).Equals(".txt", StringComparison.InvariantCultureIgnoreCase))
    {
        //file has correct extension, do something with file
    }
    else
    {
        MessageBox.Show("Not a text file");
    }
}
Run Code Online (Sandbox Code Playgroud)

在将这类东西投入生产之前,我可能会添加更多的空检查(例如,如果文件没有扩展名怎么办?)但这应该给你基本的想法.

如果你想要某种更严格的测试来查看被删除的文件是否是文本文件,而不仅仅是检查它的扩展名,我建议你阅读这个问题.