如题,win7的通用对话框比原来的XP更丰富了,例如在PPT中选文件->打开,你会看到Open按钮有个下拉列表,里面有很多Open As Copy等。
我的问题是如何自定义,比如我需要来一个Open over current。我目前是在C#中利用了下面实现打开通用对话框[DllImport("Comdlg32.dll", SetLastError = true, ThrowOnUnmappableChar = true, CharSet = CharSet.Auto)]
public static extern bool GetOpenFileName([In, Out] OpenFileName ofn);但打开后只有Open和Open as Read-only两个选项,看文档说OpenFileName结构的flags属性会有一定的影响,不过还是没找到如何实现自定义Open按钮选项列表,跪求!!!

解决方案 »

  1.   

    [DllImport("Comdlg32.dll", SetLastError = true, ThrowOnUnmappableChar = true, CharSet = CharSet.Auto)]
    public static extern bool GetOpenFileName([In, Out] OpenFileName ofn);
    需要这样吗C#那个打开文件的对话框没有吗
      

  2.   

    我找到方法了,利用了ComImport。
    谢谢楼上的关注,C#托管代码没有Open按钮的扩展,不能像Win7或Vista那样可以Open as XXX。
    如下是我的分析结果:1.下载Windows® API Code Pack for Microsoft® .NET Framework2.查看 "\Windows API Code Pack 1.1\source\WindowsAPICodePack\Shell\CommonFileDialogs\CommonFileDialog.cs" 如何从com中利用 IFileDialogCustomize.3.看完之后,如果你想往"Open"下拉按钮中加东西,你可以写如下代码
              customize.EnableOpenDropDown(0);          customize.AddControlItem(0, 0, "Open as XXX");          customize.AddControlItem(0, 1, "Open in YYY");
    注意:0 是Open按钮的 ID这样,当用户选择某项Open后,你可以通过如下方式获取选项序号
              this.customize.GetSelectedControlItem(0, out openindex);
    再次注意:0 是Open按钮的 ID