<C#>_在窗体中打开文件

原创 2017年07月19日 19:27:23

        最近在做一个项目,需要打开在软件中点击按钮,从而打开一个文件,新手学习C#,从此把之后总结的C#的点点知识都总结起来,虽然不是主要做C#上位机的开发,但是多学点东西总是没错,往后会不定期一点点记录自己所学到的知识,希望以后的自己慢慢强大起来。

先来说说现在做的这个界面,如下图所示:


这个界面中,点击【打开】按钮可以选择要打开的文件,如下图所示:

这里涉及一个控件的知识了,就是OpenFileDialog。

选中打开的文件后,实现的功能是把选择的文件的名字填入【文件名】中:


实现的代码如下:

public void openfile(int n)
        {
            OpenFileDialog openfile = new OpenFileDialog();


            openfile.Filter = "*.cs | *.cs";//设置文件后缀
            if (openfile.ShowDialog() == DialogResult.OK)
            {
                string filename = openfile.FileName;
                dic1.Add(n, filename);
                fileArr[n].Text = filename.Substring(filename.LastIndexOf("\\") + 1, filename.LastIndexOf(".") - (filename.LastIndexOf("\\") + 1));
            }           
        }


页面中的【NO】按钮是用来打开文件的,打开的文件是readonly权限,是不可编写的,点击【编辑】按钮就可以打开文件并且编辑,实现代码如下:

public void readfile(int btNumber, string mode)//点击【NO】按钮,以只读发方式打开文件
        {
            int key = Convert.ToInt16(numArr[btNumber].Text) - 1;
            foreach (KeyValuePair<int, string> kv in dic1)
            {
                if (kv.Key == key)
                {
                    System.IO.FileInfo f = new System.IO.FileInfo(kv.Value);
                    if (mode == "ReadOnly")
                    {
                        f.Attributes = System.IO.FileAttributes.ReadOnly;
                    }                   
                    System.Diagnostics.Process csProcess = System.Diagnostics.Process.Start(kv.Value);
                }
            }  
        }


public void readfile(int btNumber)//点击【编辑】按钮,以可读可写发方式打开文件
        {
            int key = Convert.ToInt16(numArr[btNumber].Text) - 1;
            foreach (KeyValuePair<int, string> kv in dic1)
            {
                if (kv.Key == key)
                {
                    System.IO.FileInfo f = new System.IO.FileInfo(kv.Value);
                    f.Attributes = System.IO.FileAttributes.Normal;
                    System.Diagnostics.Process csProcess = System.Diagnostics.Process.Start(kv.Value);
                }
            }
        }


       在C#窗体中使用代码实现文件的打开,用的是进程的思想,即Windows中每个软件都是一个进程,我们平时在电脑中自己打开一个txt文件就是打开一个进程,在代码中同样可以实现打开文件的功能。

关键语句就是:

System.Diagnostics.Process csProcess = System.Diagnostics.Process.Start(kv.Value);

这里的kv.Value是用键值对把文件名和【NO】中的序号对应起来,方便做一些读写操作。


在没有设置文件的权限时,文件是不可改变的,所以以上代码中,如果不实现

 f.Attributes = System.IO.FileAttributes.ReadOnly;

文件打开后也是不能更改的,大家可以试试。


为了使文件能够修改,要设置成 f.Attributes = System.IO.FileAttributes.Normal;


设置文件的属性主要用到了FileInfo类的Attributes属性。



                                                                                                                                                                   Kyrie Irving___全.

winform打开本地的txt文件并显示在窗体中

基于c#winform 通过选取本地的txt文件,将文件路径及文本内容显示在窗体中。
  • pillom
  • pillom
  • 2016年04月19日 13:33
  • 2845

C#第十周任务之最后一项之创建一个如下的窗体,并在窗体上放置一个菜单、一个工具栏控件。菜单内容如第二个图所示。工具栏上有两个按钮,分别对应“打开文本文件”、“保存文本文件”。菜单和工具栏具体功能实现可

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; ...

C# 利用接口在窗体间传递消息(很基础很实用)

接口是一组包含了函数型方法的数据结构。通过这组数据结构,客户代码可以调用组件对象的功能。我们在实际开发中,经常要用到在窗体间传递数据。很多情况下,我们用委托把数据从子窗体传递到主窗体,这个例子我们来看...

C#中在窗体间使用消息来处理相关联的事件

在项目中有这样的需求,在主窗体隐藏时或者主进程运行时对其它窗体的控件或者事件进行控制,而且其它窗体是处于活动状态,而主窗体或者主进程是隐藏在后面的。这个时候使用句柄和消息来处理就比较好解决这些问题了,...

C#0009--直接在窗体上绘图

C#0009--直接在窗体上绘图

c# winform在窗体topmost=true的情况下调用exe

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin...

自定义Dialog,如何实现浮动层,主要是dialog浮动在窗体上

学习目标: 1.如何自定义Dialog的外观样式和方法? 自定义一个类继承自Dialog类,然后在构造方法中,定义这个dialog的布局和一些初始化信息。 public class Menu...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:<C#>_在窗体中打开文件
举报原因:
原因补充:

(最多只允许输入30个字)