C# 之 OpenFileDialog的使用

摘要:
1、 打开文件对话框(OpenFileDialog)1.OpenFileDialog控件具有以下基本属性[1]InitialDirectory:对话框的初始目录[2]筛选器:要在对话框中显示的文件筛选器,例如,“文本文件(*.txt)|*.txt |所有文件(*.*)||*.*”[3]筛选器索引:对话框中选择的文件筛选器的索引。如果选择了第一项,则将其设置为1[4]还原

一、打开文件对话框(OpenFileDialog)

1、 OpenFileDialog控件有以下基本属性
  [1]InitialDirectory:对话框的初始目录
  [2]Filter:要在对话框中显示的文件筛选器,例如,"文本文件(*.txt)|*.txt|所有文件(*.*)||*.*"
  [3]FilterIndex:在对话框中选择的文件筛选器的索引,如果选第一项就设为1
  [4]RestoreDirectory:控制对话框在关闭之前是否恢复当前目录
  [5]FileName:第一个在对话框中显示的文件或最后一个选取的文件,路径的返回用filename是字符串类型
  [6]Title:将显示在对话框标题栏中的字符
  [7]AddExtension:是否自动添加默认扩展名
  [8]CheckPathExists:在对话框返回之前,检查指定路径是否存在
  [9]DefaultExt:默认扩展名
  [10]DereferenceLinks:在从对话框返回前是否取消引用快捷方式
  [11]ShowHelp:启用"帮助按钮"
  [12]ValiDateNames:控制对话框检查文件名中是否不含有无效的字符或序列

2、 OpenFileDialog控件有以下常用事件
  [1]FileOk 当用户点击"打开"或"保存"按钮时要处理的事件
  [2]HelpRequest 当用户点击"帮助"按钮时要处理的事件

  

3、可以用以下代码来实现上面这个对话框:

  private void openFileDialogBTN_Click(object sender, System.EventArgs e)
    {
        System.Windows.Forms.OpenFileDialog openFileDialog = new System.Windows.Forms.OpenFileDialog();
        openFileDialog.InitialDirectory = "c:\";//注意这里写路径时要用c:\而不是c:
        openFileDialog.Filter = "文本文件|*.*|C#文件|*.cs|所有文件|*.*";
        openFileDialog.RestoreDirectory = true;
        openFileDialog.FilterIndex = 1;
     
     DialogResult result = openFileDialog.ShowDialog();
if (result == System.Windows.Forms.DialogResult.OK) { string fName = openFileDialog.FileName; File fileOpen = new File(fName); isFileHaveName = true; txtRich.Text = fileOpen.ReadFile(); txtRich.AppendText(""); } }

二、OpenFileDialog 类的ShowDialog() 错误的解决

错误信息:在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式。请确保您的 Main 函数带有 STAThreadAttribute 标记。 只有将调试器附加到该进程才会引发此异常。

  在测试程序里没有问题,当移到多线程程序里就报以上错误。解决办法就是添加单独线程,代码如下:

        private Thread invokeThread;

        private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            openFileDialog1 = new OpenFileDialog();
            openFileDialog1.InitialDirectory = patch;
            openFileDialog1.Filter = "xls files (*.xls)|*.xls";

            invokeThread = new Thread(new ThreadStart(InvokeMethod));
            invokeThread.SetApartmentState(ApartmentState.STA);
            invokeThread.Start();
            invokeThread.Join();

            if (result == DialogResult.OK)
            {
                if (openFileDialog1.FileName != "")
                {
                    Process.Start(openFileDialog1.FileName);
                }
} }
private void InvokeMethod() { result = openFileDialog1.ShowDialog(); }

免责声明:文章转载自《C# 之 OpenFileDialog的使用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ASP.NET MVC 第五回 ActionResult的其它返回值bzoj1901: Zju2112 Dynamic Rankings下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

IntelliJ IDEA(2017)安装和破解

IDEA全称IntelliJIDEA,是Java语言开发的集成环境,IntelliJ在业界被公认为最好的java开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE支持、各类版本工具、JUnit、CVS整合、代码分析、创新的GUI设计等方面的功能可以说是超常的。用记事本打开分别在最下面一行增加一行:-javaagent:D:IDEAinJetbra...

一起学习Avalonia(十二)

可以使用数据模板自定义和显示数据模板模板。文档中介绍了Avalonia的基本数据模板。PublicstringFirstName{get;set;}publicstringLastName{get;set;}扩展使用文档最后介绍了扩展使用,包括2个模型。Student和Teacher。在MainWindowViewModel中创建属性Content。此属性是...

十四、ES开启密码认证

所以我们需要为es head和kibana添加密码认证。4、 为kibana设置密码。1.为kibana配置证书。因为kibana和es之间的连接也需要证书加密通信。mkdir-p/etc/kibana/certscp/etc/selastic search/certs-*/etc/kibana/certs/2.授予kibana主要权限。权限必须为kiban...

MAC接普通外置键盘的修改键位的方法

我使用Mac已经一年多了,现在我每天都越来越喜欢它。所有使用过Mac的学生都知道,Mac键盘的最大特点是它比普通键盘更具有命令键位置。普通键盘没有命令键。当我连接键盘时,我发现胜利键到处都是命令键。非常发达,所以你拥有mac下所需的所有密钥。但最关键的问题之一是,它们的顺序与Mac下的顺序不同。这与mac的使用习惯不一致。百度之后,我发现键盘可以修改。...

如何修改cmd控制台默认编码为utf-8

如何修改cmd控制台默认编码为utf-81.打开cmd窗口后,在窗口顶部右击选择属性,选中选项后会看到默认编码为gbk2.然后我们在默认窗口路径内,输入chcp命令后回车936就表示gbk编码3.然后在窗口中输入chcp65001,然后回车,即可看到窗口默认编码为utf-8编码了(65001代表utf-8编码)4.上面的方法每次都要重新设置,接下来的方法是永...

ZFS文件系统及Freenas介绍

作为OpenSolaris开源计划的一部分,ZFS于2005年11月发布。它被Sun称为终极文件系统,已经积极开发了10年。ZFS的最大优点之一是,当将其他磁盘添加到池中时,现有文件系统可以自动增长。ZFS使用快照来跟踪文件系统中的更改。5.数据完整性验证和自动修复当新数据写入ZFS时,将创建数据的校验和,从而允许文件系统分叉到新数据集中。...