今天碰到个难题,项目中用到一个 OpenFileDialog (System.Windows.Forms) 扩展控件(Dialog 右侧带图片预览),在XP下运行没有问题,可在Vista下运行的时候,这个预览框便被 ListView 遮盖住,这可能是因为Vista将 ListView Fill 到 Dialog 的最右侧造成的。
经过一番周折,发现WinForms对话框类包含一个属性 AutoUpgradeEnabled,此属性默认为真,因此在 Windows Vista 运行下 FileDialog 实例自动升级到 Vista 的外观和行为。此属性设置为false ,可以让旧的 XP 对话框风格在 Windows Vista 下使用。还有一个非常重要的是 Vista 下需要安装 .NET 2.0 SP1 支持该属性。:)
MSDN上的描述:
AutoUpgradeEnabled 该属性获取或设置一个值,该值指示此 FileDialog 实例在 Windows Vista 上运行时是否应自动升级外观和行为。如果此属性为 false,则 FileDialog 类在 Windows Vista 上将具有 Windows XP 样式的外观和行为。在 Windows XP 上,此属性不起任何作用。
哈哈,差点弄得我要改控件,把预览放到对话框下面。
如果 FileDilag 不用扩展的话,可以使用 Microsoft.Win32 的对话框,该类在 PresentationFramework Assembly。运行在 Windows Vista 上将具有 Windows XP 样式的外观和行为。
关于 OpenFileDialog 的图片预览可以参照这个示例:
http://www.codeproject.com/KB/dialog/OpenFileDialogEx.aspx
Vista Bridge Sample Library 1.4 源代码组件,其包括Vista风格工具栏和文件对话框、常见打开和保存对话框、已知文件夹、网络清单、命令链接控制、航空向导控制、系统提供图标等等。