<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___全.

C#中如何处理子窗体在父窗体中显示的位置

   这几天我一直在做一个WinForms项目,等做得差不多准备运行的时候,突然发现了一个问题,那就是该如何控制子窗体在父窗体中显示的位置。    经过一段时间的查找才找到一个可以解决的方案,希望这个...
  • liaoxiaoli99
  • liaoxiaoli99
  • 2009年06月09日 21:50
  • 4615

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

C#0009--直接在窗体上绘图
  • u012025054
  • u012025054
  • 2014年05月27日 22:14
  • 1887

c# 窗体应用程序 如何添加图片

1.打开工具箱,添加picturebox控件 2.设置picturebox控件的 sizeMode属性为Zoom
  • qq_33160271
  • qq_33160271
  • 2017年06月10日 23:17
  • 367

c#如何将子窗体显示到父窗体的容器(panel)控件中

如何将一个窗体显示到一个容器控件中,刚开始想的比较简单,用窗体容器控件添加一般控件的方法,试了一试,代码如下: Form2 frm = new Form2(); ...
  • u011555996
  • u011555996
  • 2017年02月10日 11:24
  • 3432

c# panel里面嵌入窗体

现有一个父窗体name是Parent,子窗体name是Son,要让Son嵌入在Parent的Panel内,则父窗体的初始加载代码如下: private void Parent_Load(object ...
  • wzk456
  • wzk456
  • 2015年09月30日 23:17
  • 4613

C# 在线程中显示一个新窗体

在多线程中,一个线程结束时需要显示一些结果信息给用户,我采用新的窗体来显示。但简单的在线程体里面如下写private void ThreadFunc() { MsgForm msg = ...
  • surgent
  • surgent
  • 2010年10月13日 12:16
  • 5434

C# 设置Windows 窗体的屏幕位置,动态创建的Form

在C#动态创建的Form设置Windows 窗体的屏幕位置1、一种方法直接设置Form的Location 如form1.Location = new Point(100,300);2、设置left,T...
  • yanleigis
  • yanleigis
  • 2007年12月11日 15:09
  • 2946

c# 在类中将数据传递给窗体

在Form1中 textbox1的modifilers设为Public, public static Form1 f=null; public Form1() ...
  • wind_cloud2011
  • wind_cloud2011
  • 2013年12月27日 12:26
  • 1444

C#利用接口实现窗体间函数调用

参考地址:http://www.csframework.com/archive/2/arc-2-20110805-1771.htm 实现子窗体调用主窗体某个函数 (1)在主窗体中建立接口函数 /...
  • Micro_Ryan
  • Micro_Ryan
  • 2015年04月26日 08:48
  • 1886

C#怎么怎么添加一个现有窗体到工程中

我有个一个程序要用到以前的工程里的一个窗体,现在想把它添加到现在的工程里面,可是通过添加现有项,窗体的三个文件Form1.cs、Form1.Designer.cs、Form1.resx文件是并列显示在...
  • wu_pan123
  • wu_pan123
  • 2017年05月26日 11:39
  • 912
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:<C#>_在窗体中打开文件
举报原因:
原因补充:

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