唉哟,这次厉害咯,网上搜罗了好久,终于被我找到汉化的保存对话框了,根据网上的一些前辈总结的内容,做了一些修改,
先放个效果图:

首先需要定义一个OpenFileName的类:
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
public class OpenFileName
{
public int structSize = 0;
public IntPtr dlgOwner = IntPtr.Zero;
public IntPtr instance = IntPtr.Zero;
public String filter = null;
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 = null;
public int flags = 0;
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;
}
当然,也不是都用到了,只用到了一小部分,有性趣的童鞋可以个性化一下保存对话框,
然后是最重要的委托GetSaveName()方法:
public class DllUse
{
[DllImport("Comdlg32.dll", SetLastError = true, ThrowOnUnmappableChar = true, CharSet = CharSet.Auto)]
public static extern bool GetSaveFileName([In, Out] OpenFileName ofn);
}
挡挡挡,最后调用一下即可:
public static void OpenDialog(Action<Stream> onSave)
{
OpenFileName ofn = new OpenFileName();
ofn.structSize = Marshal.SizeOf(ofn);
ofn.filter = "Excel (*.xls)\0*.xls\0\0";
ofn.file = new string(new char[256]);
ofn.maxFile = ofn.file.Length;
ofn.fileTitle = new string(new char[64]);
ofn.maxFileTitle = ofn.fileTitle.Length;
ofn.initialDir = UnityEngine.Application.dataPath;//默认路径ofn.title = "保存文件";
ofn.defExt = ".xls";//显示文件的类型ofn.flags = 0x00080000 | 0x00001000 | 0x00000800 | 0x00000200 | 0x00000008;if (DllTest.GetSaveFileName(ofn))
{
dosomething();string Savepath = Path.GetDirectoryName (ofn.file);
Process.Start (Savepath);
}
}


终于搞定保存对话框汉化了,5555,也是不容易啊!
那位小伙伴有更好的方法希望可以分享给我啊!
编辑推荐:
- Unity C# GetSaveFileName()的实例详解02-21
- 调用user32.dll显示其他窗口02-21
- C#开发中遇到的问题分享02-21
- 分享在C#中时间戳是怎么转换的?02-21
- 总结一些编码和设计原则实例02-21
- 浅谈WPF之Binding表达式02-21
- 详解.net正则表达式怎么使用?02-21
- 克隆对象的方法实例教程02-21
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- Unity C# GetSaveFileName()的实例详解
Unity C# GetSaveFileName()的实例详解
26-02-21 - 浅谈WPF之Binding表达式
浅谈WPF之Binding表达式
26-02-21 - 克隆对象的方法实例教程
克隆对象的方法实例教程
26-02-21 - 学习ASP.NET Core 2遇到的问题分享
学习ASP.NET Core 2遇到的问题分享
26-02-21 - C#基础之操作优化实例教程
C#基础之操作优化实例教程
26-02-21 - 总结EF通用数据层封装类实例详解
总结EF通用数据层封装类实例详解
26-02-21 - 使用 VSCode 编写 .NET Core 项目的实例教程
使用 VSCode 编写 .NET Core 项目的实例教程
26-02-21 - Win10应用商店提示错误0x80010108的解决方案
Win10应用商店提示错误0x80010108的解决方案
26-02-21 - 分享html元素调用服务器实例
分享html元素调用服务器实例
26-02-21 - 分享一个IoC入门教程实例
分享一个IoC入门教程实例
26-02-21
