如何用C#语言app获取用户信息下载app的地址

[C#] 读写App.config配置文件的方法 | 小谢的小站
TearSnow Fan
我一句话都不说……
您当前位置 :
>> [C#] 读写App.config配置文件的方法
[C#] 读写App.config配置文件的方法
我们经常会希望在程序中写入一些配置信息,例如版本号,以及数据库的连接字符串等。你可能知道在WinForm应用程序中可以利用Properties.Settings来进行类似的工作,但这些其实都利用了App.config配置文件。
本文探讨用代码的方式访问 App.config 的方法。关于 App.config 的使用远比上面提到的用途复杂,因此仅讨论最基本的 appSettings 配置节。
一、配置文件概述:
应用程序配置文件是标准的 XML 文件,XML 标记和属性是区分大小写的。它是可以按需要更改的,开发人员可以使用配置文件来更改设置,而不必重编译应用程序。配置文件的根节点是configuration。我们经常访问的是appSettings,它是由.Net预定义的配置节。我们经常使用的配置文件的架构是客诉下面的形式。先大概有个印象,通过后面的实例会有一个比较清楚的认识。下面的“配置节”可以理解为进行配置一个XML的节点。
常见配置文件模式:
&configuration&
&configSections&
//配置节声明区域,包含配置节和命名空间声明
//配置节声明
&sectionGroup&
//定义配置节组
//配置节组中的配置节声明
&appSettings&
//预定义配置节
&Custom element for configuration section&
//配置节设置区域
下面是一个最常见的应用程序配置文件的例子,只有appSettings节:
&?xml version=&1.0& encoding=&utf-8&?&
&configuration&
&appSettings&
&add key=&connectionstring& value=&User Source=.;Password=;Initial
Catalog=Provider=SQLOLEDB.1;& /&
&add key=&TemplatePATH& value=&Template& /&
&/appSettings&
&/configuration&
在预定义的 appSettings 节(注意大小写),有很多的元素,这些元素名称都是“add”,有两个属性分别是“key”和“value”。
.NET 提供了对appSettings节的访问方法。在 .NET 1.0 和 1.1 版本中,可以使用 System.Configuration.ConfigurationSettings.AppSettings["Key"] 来对 key = "Key" 的&add&元素的 value属性 进行访问。
注意:现在.Net FrameWork 2.0中已经明确表示此ConfigurationSettings属性已经废弃,建议改为 ConfigurationManager 或 WebConfigurationManager。
使用 System.Configuration.ConfigurationManager,需要在工程里添加对 system.configuration.dll 程序集的引用。(在解决方案管理器中右键点击工程名称,在右键菜单中选择添加引用,在.NET选项卡下即可找到。)
添加引用后,就可以用 ConfigurationManager.AppSettings["Key"] 来读取对应的值了.
但是,ConfigurationManager.AppSettings 属性是只读的,并不支持修改属性值。这是因为据说微软不太建议我们动态写入app.config文件,而是建议手工配置后,在程序运行时只做静态访问。
如果实在需要在程序中进行修改,也即写入App.Config,请往下看。
二、appSettings配置节的读写操作
读取App.config文件的appSettings节的方法比较简单,可以通过上文中 System.Configuration.ConfigurationManager.AppSettings["Key"]的方法进行访问,但前面也已经说了,该方法不提供写入。
如果希望写入配置文件,可以使用ConfigurationManager对象执行打开配置文件的操作后,将会返回一个Configuration的对象,利用该对象进行操作(增删改查都可以哦)。
下面给出实现的代码(增加引用using System.Configuration名称空间)
private void AccessAppSettings()
//获取Configuration对象
Configuration config = System.Configuration.ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
//根据Key读取&add&元素的Value
string name = config.AppSettings.Settings[&name&].V
//写入&add&元素的Value
config.AppSettings.Settings[&name&].Value = &xieyc&;
//增加&add&元素
config.AppSettings.Settings.Add(&url&, &http://www.xieyc.com&);
//删除&add&元素
config.AppSettings.Settings.Remove(&name&);
//一定要记得保存,写不带参数的config.Save()也可以
config.Save(ConfigurationSaveMode.Modified);
//刷新,否则程序读取的还是之前的值(可能已装入内存)
System.Configuration.ConfigurationManager.RefreshSection(&appSettings&);
需要注意的是:
1、根据并不存在的Key值访问&add&元素,甚至使用remove()方法删除不存在的元素,都不会导致异常,前者会返回null。
2、add已经存在的&add&元素也不会导致异常,而是concat了已有的Value和新的Value,用","分隔,例如:"olldvalue,newvalue"。
3、在项目进行编译后,在运行目录bin\Debuge文件下,将出现两个配置文件,一个名为“ProjectName.EXE.config”,另一个名为“ProjectName.vshost.exe.config”。第一个文件为项目实际使用的配置文件,在程序运行中所做的更改都将被保存于此;第二个文件其实为原代码中“App.config”的同步文件,在程序运行中不会发生更改。
4、特别注意大小写(XML文件是区分大小写的),例如appSettings配置节。
5、可能有读者会想到,既然app.config是标准XML,当然也可以用操纵一般XML文件的方法来读写。这当然是可以的!具体可以看文末参考文献[2]和[3]中的代码,只不过我认为这样就失去了VS提供app.config文件的意义了,还不如自己定义一个配置文件方便。
本文只是粗略地讲了app.config文件中appSettings配置节的访问方法,connectionStrings配置节的操作基本是类似的,也可以自定义配置节。这些高级的用法可以自己体会,VS对app.config这个配置文件的管理还是很强大的,例如WinForm应用程序的Settings设置(可以在IDE中或者通过代码访问)其实也是利用了app.config文件。
参考资料:
[1] (这篇文章从.NET 1.0 过渡到 2.0,因此额外讲了很多两个版本间的变化)
[2] (作者不知从哪儿复制的一堆相关内容的大杂烩,也没好好整理,不过还蛮有用)
[3] (用操控XML文件的方法写的,复杂的情况下岂不疯掉……)
本文固定链接:
【上一篇】【下一篇】
您可能还会对这些文章感兴趣!
最新日志热评日志随机日志
官方微信扫一扫
日志总数:151 篇
评论总数:610 篇
分类总数:9 个
标签数量:251 个
链接总数:10 个
建站日期:
运行天数:2061 天
最后更新:
如果您觉得本站的内容对您有帮助,非要感谢一下不可,那么请给小谢捐赠。一 本系列随笔概览及产生的背景
自己开发的软件工具问世3年多以来,深受广大博客写作和阅读爱好者的喜爱。同时也不乏一些技术爱好者咨询我,这个软件里面各种实用的功能是如何实现的。
该软件使用.NET技术开发,为回馈社区,现将该软件中用到的核心技术,开辟一个专栏,写一个系列文章,以飨广大技术爱好者。
本系列文章除了讲解网络采编发用到的各种重要技术之外,也提供了不少问题的解决思路和界面开发的编程经验,非常适合.NET开发的初级,中级读者,希望大家多多支持。
很多初学者常有此类困惑,&为什么我书也看了,C#相关的各个方面的知识都有所了解,但就是没法写出一个像样的应用呢?&,
这其实还是没有学会综合运用所学知识,锻炼出编程思维,建立起学习兴趣,我想该系列文章也许会帮到您,但愿如此。
开发环境:VS2008
源码位置:
源码下载办法:安装SVN客户端(本文最后提供下载地址),然后checkout以下的地址:https://github.com/songboriceboy/NetworkGatherEditPublish
系列文章提纲如下:
二 第一节主要内容简介(如何使用C#语言获取博客园某个博主的全部随笔链接及标题)
获取某个博主的全部博文链接及标题的解决方案,演示demo如下图所示:
三 基本原理
&要想采集的某个博主的全部博文网页地址,需要分2步:
1.通过分页链接获取到网页源代码;
2.从获取到的网页源代码中解析出文章地址和标题;
第一步,首先找到分页链接,比如我的博客
第一页&http://www.cnblogs.com/ice-river/default.html?page=1
第二页&http://www.cnblogs.com/ice-river/default.html?page=2
&我们可以写个函数把这些分页地址字符串保存至一个队列中,如下代码所示,
下面的代码中,我们默认保存了500页,500页*20篇=10000篇博文,一般够用了,除非对于特别高产的博主。
还有一点,有心的朋友们可能会问,500页是不是太多了,有的博主只有2,3页,我们有必要去采集500个分页来获取全部博文链接么?
这里因为我们不知道某个博主到底写了多少篇博文(分成几页),所以,我们先默认取500页
,后面会讲到一种判断已经获取到全部文章链接的办法,其实我们并不会每个博主都访问500个分页。
protected void GatherInitCnblogsFirstUrls()
string strPagePre = "http://www.cnblogs.com/";
string strPagePost = "/default.html?page={0}&OnlyTitle=1";
string strPage = strPagePre + this.txtBoxCnblogsBlogID.Text + strPageP
for (int i = 500; i & 0; i--)
string strTemp = string.Format(strPage, i);
m_wd.AddUrlQueue(strTemp);
&至于获取某个网页的源文件(就是你在浏览器中,对某个网页右键---查看网页源代码功能)
C#语言已经为我们提供了一个现成的HttpWebRequest类,我将其封装成了一个WebDownloader类,具体细节大家可以参考源代码,主要函数实现如下:
public string GetPageByHttpWebRequest(string url, Encoding encoding, string strRefer)
string result = null;
WebResponse response = null;
StreamReader reader = null;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.UserAgent = "Mozilla/4.0 ( MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)";
request.Accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*";
if (!string.IsNullOrEmpty(strRefer))
Uri u = new Uri(strRefer);
request.Referer = u.H
request.Referer = strR
request.Method = "GET";
response = request.GetResponse();
reader = new StreamReader(response.GetResponseStream(), encoding);
result = reader.ReadToEnd();
catch (Exception ex)
result = "";
if (reader != null)
reader.Close();
if (response != null)
response.Close();
第一个参数传入的就是,我们上面形成的500个分页地址,函数的返回值就是网页的源代码(我们想要的文章地址和标题就在其中,接下来我们要把它们解析出来)。
第二步:从获取到的网页源代码中解析出文章地址和标题
我们要利用大名鼎鼎的HtmlAgilityPack类库,HtmlAgilityPack是一个HTML文档的解析利器,通过它我们可以方便的获得网页的标题,正文,分类,日期等等,理论上任何元素,相关的文档网上有很多,这里就不多说了。这里我们给HtmlAgilityPack增加了一个扩展方法以提取出任意网页源文件的全部超级链接GetReferences和链接对应的文本GetReferencesText。
private void GetReferences()
HtmlNodeCollection hrefs = m_Doc.DocumentNode.SelectNodes("//a[@href]");
if (Equals(hrefs, null))
References = new string[0];
References = hrefs.
Select(href =& href.Attributes["href"].Value).
Distinct().
ToArray();
private void GetReferencesText()
m_dicLink2Text.Clear();
HtmlNodeCollection hrefs = m_Doc.DocumentNode.SelectNodes("//a[@href]");
if (Equals(hrefs, null))
foreach (HtmlNode node in hrefs)
if (!m_dicLink2Text.Keys.Contains(node.Attributes["href"].Value.ToString()))
if(!HttpUtility.HtmlDecode(node.InnerHtml).Contains("img src")
&& !HttpUtility.HtmlDecode(node.InnerHtml).Contains("img ")
&& !HttpUtility.HtmlDecode(node.InnerHtml).Contains(" src"))
m_dicLink2Text.Add(node.Attributes["href"].Value.ToString(), HttpUtility.HtmlDecode(node.InnerHtml));
int a = 0;
catch (System.Exception e)
System.Console.WriteLine(e.ToString());
但是注意到,到此为止我们是获取到了某个网页中的全部链接地址,这其实距离我们想要的还差点,所以我们需要在这些链接地址集合中过滤出我们真正想要的博文地址。
这时我们需要用到强大的正则表达式工具,同样C#中提供了现成的支持类,但是需要我们对正则表达式有所了解,这里就不讲解正则表达式的相关知识了,不懂的请自行百度之。
首先我们需要观察博文链接地址的格式:
随便找几篇博文:
http://www.cnblogs.com/ice-river/p/3475041.html
http://www.cnblogs.com/zhijianliutang/p/4042770.html
我们发现链接和博主ID有关,所以博主ID我们需要有个变量(&this.txtBoxCnblogsBlogID.Text)进行记录,
上面的链接模式用正则表达式可以表示如下:
"www\.cnblogs\.com/" + this.txtBoxCnblogsBlogID.Text + "/p/.*?\.html$";
简单解释一下:\代表转义,因为.在正则表达式中有重要含义;$代表结尾,html$的意思就是以html结尾。.*?是什么,很重要且不太好理解
正则有两种模式,一种为贪婪模式(默认),另外一种为懒惰模式,以下为例:
(abc)dfe(gh)
对上面这个字符串使用(.*)将会匹配整个字符串,因为正则默认是尽可能多的匹配。
虽然(abc)满足我们的表达式,但是(abc)dfe(gh)也同样满足,所以正则会匹配多的那个。
如果我们只想匹配(abc)和(gh)就需要用到以下的表达式
在重复元字符*或者+后面跟一个?,作用就是在满足的条件下尽可能少匹配。
所以,上面的正则表达式的意思就是&含有www.cnblogs.com/接着博主ID然后再接着/p/然后再接着任意多个字符直到遇到html结尾为止&。
然后,我们就可以通过C#代码来过滤符合这个模式的全部链接了,主要代码如下:
MatchCollection matchs = Regex.Matches(normalizedLink, m_strCnblogsUrlFilterRule, RegexOptions.Singleline);
if (matchs.Count & 0)
string strLinkText = "";
if (links.m_dicLink2Text.Keys.Contains(normalizedLink))
strLinkText = links.m_dicLink2Text[normalizedLink];
if (strLinkText == "")
if (links.m_dicLink2Text.Keys.Contains(link))
strLinkText = links.m_dicLink2Text[link].TrimEnd().TrimStart();
PrintLog(strLinkText + "\n");
PrintLog(normalizedLink + "\n");
lstThisTimesUrls.Add(normalizedLink);
&判断全部文章链接获取完成:之前,我们是计划采集500个分页地址,但是有可能该博主的全部博文只有几页,那么我们该如何判断全部文章都下载完成了呢?
办法其实很简单,就是我们使用2个集合,一个是当前下载的全部文章集合,一个是本次下载到的文章集合,如果本次下载的全部文章,之前下载的全部集合中都有了,那么说明全部文章都下载完成了。
程序中,我将这个判断封装成了一个函数,代码如下:
private bool CheckArticles(List&string& lstThisTimesUrls)
bool bRet = true;
foreach (string strTemp in lstThisTimesUrls)
if (!m_lstUrls.Contains(strTemp))
bRet = false;
foreach (string strTemp in lstThisTimesUrls)
if (!m_lstUrls.Contains(strTemp))
m_lstUrls.Add(strTemp);
四 其他比较重要的知识
1.BackgroundWorker工作者线程的使用,因为我们的采集任务是一个比较耗时的工作,所以我们不应该放到界面主线程去做,我们应该启动一个后台线程,c#中最方便的后台线程使用方法就是利用BackgroundWorker类。
2.由于我们需要在解析出每一篇文章的地址及标题后,在界面上打印出来,同时因为我们不能在工作者线程中去修改界面控件,所以这里我们需要使用C#中的代理delegate技术,通过回调的方式来实现在界面上输出信息。
TaskDelegate deles = new TaskDelegate(new ccTaskDelegate(RefreshTask));
public void RefreshTask(DelegatePara dp)
//如果需要在安全的线程上下文中执行
if (this.InvokeRequired)
this.Invoke(new ccTaskDelegate(RefreshTask), dp);
//转换参数
string strLog = (string)dp.strL
WriteLog(strLog);
protected void PrintLog(string strLog)
DelegatePara dp = new DelegatePara();
dp.strLog = strL
deles.Refresh(dp);
public void WriteLog(string strLog)
strLog = System.DateTime.Now.ToLongTimeString() + " : " + strL
this.richTextBoxLog.AppendText(strLog);
this.richTextBoxLog.SelectionStart = int.MaxV
this.richTextBoxLog.ScrollToCaret();
作者:出处:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。正在看本人博客的这位童鞋,我看你气度不凡,谈吐间隐隐有王者之气,日后必有一番作为!旁边有&推荐&二字,你就顺手把它点了吧,相得准,我分文不收;相不准,你也好回来找我!
阅读(...) 评论()没有更多推荐了,
不良信息举报
举报内容:
C#实现把用户第一次选择的路径保存到配置文件app.config中
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!一 本系列随笔概览及产生的背景
本系列开篇受到大家的热烈欢迎,这对博主是莫大的鼓励,此为本系列第三篇,希望大家继续支持,为我继续写作提供动力。
自己开发的软件工具问世3年多以来,深受广大博客写作和阅读爱好者的喜爱。同时也不乏一些技术爱好者咨询我,这个软件里面各种实用的功能是如何实现的。
该软件使用.NET技术开发,为回馈社区,现将该软件中用到的核心技术,开辟一个专栏,写一个系列文章,以飨广大技术爱好者。
本系列文章除了讲解网络采编发用到的各种重要技术之外,也提供了不少问题的解决思路和界面开发的编程经验,非常适合.NET开发的初级,中级读者,希望大家多多支持。
很多初学者常有此类困惑,&为什么我书也看了,C#相关的各个方面的知识都有所了解,但就是没法写出一个像样的应用呢?&
这其实还是没有学会综合运用所学知识,锻炼出编程思维,建立起学习兴趣,我想该系列文章也许会帮到您,但愿如此。
开发环境:VS2008
本节源码位置:
源码下载办法:安装SVN客户端(本文最后提供下载地址),然后checkout以下的地址:
系列文章提纲如下:
二 第三节主要内容简介(如何使用C#语言下载博文中的全部图片到本地并可以离线浏览)
网页的抓取主要分为3步:
1.通过分页链接抓取到全部文章链接集合(第一节内容)
2.通过每一个文章链接获取到文章的标题及正文(第二节内容)
3.从文章正文中解析出全部图片链接,并将文章的全部图片下载到本地(本节内容)
这3步有了,之后你就想怎么折腾就怎么折腾了,各种加工处理,生成pdf,chm,静态站点,远程发布到其他站点等等。
如何使用C#语言下载博文中的全部图片到本地并可以离线浏览的解决方案演示demo如下图所示:
点击下载正文全部图片按钮后,会在可执行程序所在目录生成一个文件夹(文字为该网页的标题),文件夹中包含一个html文件(网页正文)以及网页正文中的全部图片。该html文件对最初正文html文件进行了处理,其中的图片链接均修改成了本地图片文件。
三 基本原理
下载博文中的全部图片可以分解成3步:
1.下载网页正文,找出其中的全部图片链接地址;
2.对于每一个图片链接地址,下载该图片到本地(起一个文件名),同时替换原来的图片地址为我们刚刚起的文件名;
3.第二步全部图片下载完成后,将所有图片链接替换后的网页正文保存为一个新的html文件(index.html)。
接下来我们就一步一步来看一下如何做:
&1.下载网页正文,找出其中的全部图片链接地址;
&如何下载网页正文请参考第二节内容,下面咱们看一下如何来获取网页正文中的全部图片链接:
private void GetSrcLinks()
HtmlNodeCollection atts = m_Doc.DocumentNode.SelectNodes("//*[@src]");
if (Equals(atts, null))
Links = atts.
SelectMany(n =& new[]
ParseLink(n, "src"),
Distinct().
ToArray();
通过HtmlAgilityPack中的HtmlDocument类找出全部src属性的节点,再通过linq提取出其中的网页地址。
2.对于每一个图片链接地址,下载该图片到本地,如下代码所示:
DocumentWithLinks links = htmlDoc.GetSrcLinks();
int i = 1;
string baseUrl = new Uri(strLink).GetLeftPart(UriPartial.Authority);
foreach (string strPicLink in links.Links)
if (string.IsNullOrEmpty(strPicLink))
string strExtension = System.IO.Path.GetExtension(strPicLink);
if (strExtension == ".js" || strExtension == ".swf")
if (strExtension == "")
strExtension = ".jpg";
string normalizedPicLink = GetNormalizedLink(baseUrl, strPicLink);
strNewPage = DownLoadPicInternal(wc, strNewPage, strPageTitle, strPicLink, normalizedPicLink, strExtension, ref i);
catch (Exception ex)
} //end try
其中&DownLoadPicInternal的实现代码如下:
protected string DownLoadPicInternal(WebClient wc, string strNewPage, string strPageTitle, string strPicLink
, string strTureLink, string strExtension, ref int i)
strPageTitle = strPageTitle.Replace("\\", "").Replace("/", "").Replace(":", "").Replace("*", "").Replace("?", "")
.Replace("\"", "").Replace("&", "").Replace("&", "").Replace("|", "");
strPageTitle = Regex.Replace(strPageTitle, @"[|&/\;.':*?&&-]", "").ToString();
strPageTitle = Regex.Replace(strPageTitle, "[\"]", "").ToString();
strPageTitle = Regex.Replace(strPageTitle, @"\s", "");
if (!Directory.Exists(Application.StartupPath + "\\" + strPageTitle))//判断是否存在
Directory.CreateDirectory(Application.StartupPath + "\\" + strPageTitle);//创建新路径
int[] nArrayOffset = new int[2];
nArrayOffset = m_bf.getOffset(strPicLink);
strNewPage = strNewPage.Replace(strPicLink, nArrayOffset[0].ToString() + nArrayOffset[1].ToString() + strExtension);
string strSavedPicPath = Path.Combine(strPageTitle, nArrayOffset[0].ToString() + nArrayOffset[1].ToString() + strExtension);
PrintLog(" 开始下载文章 [" + strPageTitle + "] 的第" + i.ToString() + "张图片\n");
strTureLink = HttpUtility.UrlDecode(strTureLink);
wc.DownloadFile(strTureLink, Application.StartupPath + "\\" + strSavedPicPath);
PrintLog(" 下载完成文章 [" + strPageTitle + "] 的第" + i.ToString() + "张图片\n");
System.Threading.Thread.Sleep(300);
return strNewP
其中粉色代码部分m_bf变量是BloomFilter类型的一个对象,BloomFilter是一个网页去重的强大工具,这里是为了将图片链接转化为一个独一无二的文件名。
strNewPage = strNewPage.Replace(strPicLink, nArrayOffset[0].ToString() + nArrayOffset[1].ToString() + strExtension);
此行代码是用新的图片文件名替换原网页中的图片链接。其他部分的代码之前章节均有解释,请自行参考。
&3.第二步全部图片下载完成后,将所有图片链接替换后的网页正文保存为一个新的html文件(index.html),主要代码如下:
strPageTitle = strPageTitle.Replace("\\", "").Replace("/", "").Replace(":", "").Replace("*", "").Replace("?", "")
.Replace("\"", "").Replace("&", "").Replace("&", "").Replace("|", "");
strPageTitle = Regex.Replace(strPageTitle, @"[|&/\;.':*?&&-]", "").ToString();
strPageTitle = Regex.Replace(strPageTitle, "[\"]", "").ToString();
strPageTitle = Regex.Replace(strPageTitle, @"\s", "");
File.WriteAllText(Path.Combine(strPageTitle, "index.html"), strNewPage, Encoding.UTF8);
上面的一堆替换是因为windows对文件夹名有要求---不能包含一些特殊字符,这里我们通过正则替换去掉这些特殊字符。
到此为止,我们就实现了将任意网页中的正文中的图片下载到本地的功能,并同时修改了原来网页正文中的图片链接,以达到可以离线浏览的目的。
以后的生成pdf,chm均以此为基础,这一节是重中之重,有兴趣的同学可以扩展我提供的代码,将它改造成某个站点的图片采集器应该也是一件简单的事情。
四 下节预告
使用C#语言如何将html网页转换成pdf(html2pdf)。
作者:出处:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。正在看本人博客的这位童鞋,我看你气度不凡,谈吐间隐隐有王者之气,日后必有一番作为!旁边有&推荐&二字,你就顺手把它点了吧,相得准,我分文不收;相不准,你也好回来找我!
阅读(...) 评论()C#做的WInform程序,怎么实现浏览文件,获取文件地址和名称_百度知道
C#做的WInform程序,怎么实现浏览文件,获取文件地址和名称
新手,C#做的WInform程序,怎么实现浏览文件,获取文件地址和名称,如图:一个文本框+一个按钮
:点击按钮时获取浏览文件的完全地址和名称,大神详细点,写点代码,谢谢啊
我有更好的答案
&&&&&&&&&&&&OpenFileDialog&ofd&=&new&OpenFileDialog();&&&&&&&&&&&&if&(ofd.ShowDialog(this)&==&System.Windows.Forms.DialogResult.OK)&&&&&&&&&&&&{&&&&&&&&&&&&&&&&string&file&=&ofd.FileN&&&&&&&&&&&&}变量 file 就是最终拿到的文件路径和文件名称。
采纳率:42%
为您推荐:
其他类似问题
winform的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 app获取用户信息 的文章

 

随机推荐