zoukankan      html  css  js  c++  java
  • 在WPF使用FolderBrowserDialog和OpenFileDialog。

    相信习惯以前winform开发的朋友们都对FolderBrowserDialog和OpenFileDialog这两个东东不陌生,但是在我最近做的WPF项目中

    才发现这两个东东在WPF中却不是默认存在的,郁闷,好歹WPF也出来几年了,咋个微软的同志不与时俱进呢。

    好了,说说具体怎么用吧。

    OpenFileDialog

    用这个东东需要引用Microsoft.Win32类库。还是老玩意可靠。

    Microsoft.Win32.OpenFileDialog op = new Microsoft.Win32.OpenFileDialog();
             op.InitialDirectory = @"c:\";
              op.RestoreDirectory = true;
              op.Filter = "文本文件(*.txt)|*.txt|所有文件(*.*)|*.*";
              op.ShowDialog();
              txtPath.Text = op.FileName;

    FolderBrowserDialog

    这个要麻烦点点,先建一个类,比如命名为OldWindow.cs

    public class OldWindow : System.Windows.Forms.IWin32Window
      {
          IntPtr _handle;
          public OldWindow(IntPtr handle)
          {
              _handle = handle;
          }

          #region IWin32Window Members
          IntPtr System.Windows.Forms.IWin32Window.Handle
          {
              get { return _handle; }
          }
          #endregion
      }

    然后在你要使用的地方这样写

    System.Windows.Forms.FolderBrowserDialog dlg = new System.Windows.Forms.FolderBrowserDialog();
             System.Windows.Interop.HwndSource source = PresentationSource.FromVisual(this) as System.Windows.Interop.HwndSource;
             System.Windows.Forms.IWin32Window win = new {上面那个类所在的命名空间名称}.OldWindow(source.Handle);
             System.Windows.Forms.DialogResult result = dlg.ShowDialog(win);

             txtPath.Text = dlg.SelectedPath;

    BTW:需要在项目中引用System.Windows.Forms.dll

    无标题

  • 相关阅读:
    CoreData和SQLite多线程访问时的线程安全问题
    JSPatch 实现原理详解
    iOS开发工程师必备技能(持续更新)
    iOS音频播放、录音、视频播放、拍照、视频录制
    使用MVVM减少控制器代码实战(减少56%)
    如何结合场景利用block进行回调
    Masonry框架源码深度解析
    Ubantu编译安装FFmpeg
    HTTP Live Streaming网络视频直播调研
    RHEL/CentOS 6的更新源
  • 原文地址:https://www.cnblogs.com/allanyang/p/1882062.html
Copyright © 2011-2022 走看看