c# winforms GetCurrentDirectory 返回 C:\WINDOWS\System32\ 设计错误

Posted

技术标签:

【中文标题】c# winforms GetCurrentDirectory 返回 C:\\WINDOWS\\System32\\ 设计错误【英文标题】:c# winforms GetCurrentDirectory returns C:\WINDOWS\System32\ design errorc# winforms GetCurrentDirectory 返回 C:\WINDOWS\System32\ 设计错误 【发布时间】:2018-03-29 04:54:08 【问题描述】:

我正在制作一个带有 winforms 项目的收银员应用程序,我需要使用访问数据库,我使用了 System.IO.GetCurrentDirectory()。但它在设计时返回C:\WINDOWS\System32,所以当我使用设计器时它会不断弹出消息框。

当我运行它时它也会返回正确的目录。

这是我的连接字符串的示例:

OleDbConnection conn = new OleDbConnection();
string dataPath = System.IO.Directory.GetCurrentDirectory();
conn.ConnectionString = @"
Provider=Microsoft.ACE.OLEDB.12.0;
Data Source=" + dataPath + "/Data/Databases/database.accdb;Persist Security Info=False";

如有任何帮助,将不胜感激。

编辑:

当我尝试打开设计器时会发生什么: https://i.stack.imgur.com/HQjHa.png

【问题讨论】:

到底是什么问题? 它在设计时返回 C:\WINDOWS\System32,所以消息框不断弹出 启动设计器时怎么会出现错误???你为什么不从项目中排除数据库并将其保存在应用程序文件夹中....应该修复它:) 【参考方案1】:

不知道为什么会这样,但你可以试试:

System.Environment.CurrentDirectory

//or

Application.StartupPath

//or

System.IO.Path.GetDirectoryName(Application.ExecutablePath);

//or

System.IO.Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);

//or

System.AppDomain.CurrentDomain.BaseDirectory

【讨论】:

哪一个最好更可靠? 都返回相同的结果,看看哪一个有效 以上这些都不起作用:(它现在给了我visual studio的程序文件路径 在 Visual Studio 外运行并告诉我结果 如果我运行它就可以工作,但是如果我打开设计器,会从我的异常处理中弹出一堆消息框,它说数据库的路径错误并且消息框一直弹出所以我什么都做不了

以上是关于c# winforms GetCurrentDirectory 返回 C:\WINDOWS\System32\ 设计错误的主要内容,如果未能解决你的问题,请参考以下文章

c# winform 报表打印

c#控件 winform怎么使用

c# winform 如何做浮动窗口

如何从另一个 WinForm 中通过 C# WinForm 查看

C#中 winform程序 怎么制作纵向选项卡

C# winform 托盘图标问题?