6

我正在开发一个 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
    }
}

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

我怎么做?

4

1 回答 1

8

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

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");
    }
}

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

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

于 2012-11-01T10:40:02.053 回答