/// <summary>
/// 设置文件对话框的属性
/// </summary>
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]//字节自动对齐
public class LoveNeon_OpenFileName
{
public int structSize = 0;
public IntPtr dlgOwner = IntPtr.Zero;
public IntPtr instance = IntPtr.Zero;
public String filter = "图片文件(*.jpg*.png*.bmp)\0*.jpg;*.png;*.bmp\0所有文件\0*.*\0\0";//显示名称\0文件格式\0\0 \0是结束符
public String customFilter = null;
public int maxCustFilter = 0;
public int filterIndex = 0;
public String file = null;//打开后的文件路径
public int maxFile = 0;//路径的最大长度
public String fileTitle = null;
public int maxFileTitle = 0;
public String initialDir = null;// 默认路径
public String title = "打开文件";//标题
//注意 一下项目不一定要全选 但是0x00000008项不要缺少
public int flags = 0x00080000 | 0x00001000 | 0x00000800 | 0x00000200 | 0x00000008;//OFN_EXPLORER|OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST| OFN_ALLOWMULTISELECT|OFN_NOCHANGEDIR
public short fileOffset = 0;
public short fileExtension = 0;
public String defExt = null;
public IntPtr custData = IntPtr.Zero;
public IntPtr hook = IntPtr.Zero;
public String templateName = null;
public IntPtr reservedPtr = IntPtr.Zero;
public int reservedInt = 0;
public int flagsEx = 0;
}
/// <summary>
/// 打开对话框类
/// </summary>
public class LoveNeon_OpenDialog
{
/// <summary>
/// 打开文件对话框函数
/// </summary>
/// <param name="_LN_ofn">对话框属性,引用类型</param>
/// <returns>是否成功</returns>
[DllImport("Comdlg32.dll", SetLastError = true, ThrowOnUnmappableChar = true, CharSet = CharSet.Auto)]
public static extern bool GetOpenFileName([In, Out] LoveNeon_OpenFileName _LN_ofn);
/// <summary>
/// 封装好的文件对话框--图片类型
/// ------直接调用此函数就可以
/// </summary>
/// <param name="_title">文件标题(空就代表默认)</param>
/// <param name="_filter">文件类型(空就代表默认)</param>
/// <returns>选择的文件路径</returns>
public static string LN_OpenFile(string _title = "",string _filter = "")
{
LoveNeon_OpenFileName LN_ofn = new LoveNeon_OpenFileName();//初始化对象
LN_ofn.structSize = Marshal.SizeOf(LN_ofn);//首先要设置大小
LN_ofn.file = new string(new char[256]);//这里必须new
LN_ofn.maxFile = LN_ofn.file.Length;//路径的最大长度
LN_ofn.initialDir = UnityEngine.Application.dataPath;//默认路径
if (!string.IsNullOrEmpty(_title))//如果是空则使用默认
LN_ofn.title = _title;//文件标题
if(!string.IsNullOrEmpty(_filter))//如果是空则使用默认
LN_ofn.filter = _filter;//文件类型
return LN_OpenFile(LN_ofn);//返回文件名
}
/// <summary>
/// 封装好的文件对话框
/// </summary>
/// <param name="_ofn">属性类</param>
/// <returns></returns>
public static string LN_OpenFile(LoveNeon_OpenFileName _ofn)
{
//开始打开
if (GetOpenFileName(_ofn))
LoveNeon_Log.LN_DebugLog("打开文件成功,路径为:"+ _ofn.file);
else
LoveNeon_Log.LN_DebugLog("打开文件失败,路径为");
return _ofn.file;//返回文件名
}
}
打开系统文件选择对话框
于 2024-05-22 13:55:04 首次发布