我正在使用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
}
}
此代码只是我之前的文件夹放置操作的示例,但现在我想将其限制为只有一个文件,而且也必须是文本文件。因此,当drop动作发生时,它应首先检查它是否是文本文件,然后再做其他事情。
我该怎么做?
答案 0 :(得分: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");
}
}
在将这类东西投入生产之前,我可能会添加更多的空检查(例如,如果文件没有扩展名怎么办?)但这应该给你基本的想法。
如果您想要某种更严格的测试来查看被删除的文件是否是文本文件而不仅仅是检查它的扩展名,我建议您阅读this SO question。