'这2行设置是窗体或文本框可拖放的关键
Me.OLEDropMode = 1
Me.Text1.OLEDropMode = 1
End SubPrivate Sub Form_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)
'由于OLE拖放不一定是文件,先检查是不是文件列表,如果文件数少于1就取消拖放处理
If Data.Files.Count <1 Then Exit Sub
Dim tFile As String
'拖入的文件可能是一组或单个,取得第一个就行了, Item 数组的下界是1而不是0,这有点特别
tFile = Data.Files.Item(1)
'简单的文件类型检查
If UCase(Right(tFile, 4)) <>".TXT" Then
MsgBox "拖放的文件不是 TXT 文件", vbInformation
Exit Sub
End If
'以下是打开文本文件,二进制方式打开
Dim tFree As Integer
Dim tTxt As String
tFree = FreeFile
Open tFile For Binary As tFree
tTxt = Space(LOF(tFree))
Get #tFree, 1, tTxt
Close tFree
Me.Text1.Text = tTxt
End SubPrivate Sub Text1_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)
'调用窗体的拖放处理,确保拖到文本框的文件也能打开
Call Form_OLEDragDrop(Data, Effect, Button, Shift, X, Y)
End Sub
有时候,想实现以下功能:跳转到文件管理器,让用户选择一个文件,并获取用户选择的结果。跳转到文件管理器可以如下Intent跳转简单实现:
//打开文件管理器
Intent i = new
Intent(Intent.ACTION_GET_CONTENT)
i.setType("file/*")
startActivity(i)
为了获取用户选择的结果,最好是startActivityForResult()方法,以便在onActivityResult()中获取用户所选择的结果。
假设当前的需求是让用户选择一张图片。
Intent i = new Intent(Intent.ACTION_GET_CONTENT)
i.setType("image/*")
startActivityForResult(i, MY_REQUEST_CODE)
此时会d出对话框,询问要以什么方式来打开,一般可选项有图库(系统自带的,如果有的话)和文件管理器(如果有的话)。
用户选择了一个文件后,会返回原Activity,在onActivityResult()方法里,可如下 *** 作以判断文件类型。
@Override
protected
void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode ==
PHOTO_REQUEST_CODE)//自定义的一个static final int常量
{
if(resultCode
== RESULT_OK)
{
//得到文件的Uri
Uri
uri = data.getData()
ContentResolver
resolver = getContentResolver()
//ContentResolver对象的getType方法可返回形如content://的Uri的类型
//如果是一张图片,返回结果为image/jpeg或image/png等
String
fileType =
resolver.getType(uri)
if(fileType.startsWith("image"))//判断用户选择的是否为图片
{
//根据返回的uri获取图片路径
Cursor
cursor = resolver.query(uri,
new
String[]{MediaStore.Images.Media.DATA}, null, null, null)
cursor.moveToFirst()
String
path =
cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA))
//do
anything you want
}
}
}
}
我在网上看到不少童鞋说,获取文件的路径,然后根据后缀名来判断是否为图片类型。我个人觉得这样比较繁琐而且不太靠谱,可能会漏掉一些图片后缀名的判断。
所以我采用了上述的方法来判断图片的类型。其它文件类型可以类似 *** 作。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)