我的应用程序中有一部分显示用户通过OpenFileDialog加载的文件路径.它占用了太多空间来显示整个路径,但我不想只显示文件名,因为它可能不明确.所以我更喜欢显示相对于assembly/exe目录的文件路径.
例如,程序集位于"C:\ Program Files\Dummy Folder\MyProgram",文件位于"C:\ Program Files\Dummy Folder\MyProgram\Data\datafile1.dat",然后我希望它显示".\DATA\datafile1.dat".如果文件位于"C:\ Program Files\Dummy Folder\datafile1.dat"中,那么我想要"..\datafile1.dat".但是,如果文件位于根目录下或根目录下的1个目录中,则显示完整路径.
你会推荐什么解决方案?正则表达式?
基本上我想显示有用的文件路径信息而不占用太多屏幕空间.
编辑:只是为了澄清一点.此解决方案的目的是帮助用户或我自己知道我最后加载了哪个文件,大致来自哪个目录.我正在使用只读文本框来显示路径.大多数情况下,文件路径比文本框的显示空间长得多.该路径应该是提供信息的,但不足以占用更多的屏幕空间.
Alex Brault的评论很好,Jonathan Leffler也是如此.DavidK提供的Win32功能只能帮助解决部分问题,而不是整个问题,但无论如何都要感谢.至于James Newton-King的解决方案,我稍后会在我自由时试一试.
这是Access到Modified Closure的问题扩展.我只是想验证以下内容是否足够安全,适合生产使用.
List<string> lists = new List<string>();
//Code to retrieve lists from DB    
foreach (string list in lists)
{
    Button btn = new Button();
    btn.Click += new EventHandler(delegate { MessageBox.Show(list); });
}
我每次启动时都只运行一次.现在似乎工作正常.正如Jon在某些情况下提到的反直觉结果一样.那么我需要注意什么呢?如果列表不止一次运行会没问题吗?
我看到Jon在初始化未知类型的通用对象时的回复:
但是,如果您希望单个集合包含多个不相关的值类型,则必须使用
List<object>
我不是比较ArrayListvs List<>,而是ArrayListvs List<object>,因为两者都将暴露类型的元素object.在这种情况下使用任何一个会有什么好处?
编辑:这里不关心类型安全,因为这两个类都是object作为它的项目暴露.仍然需要从object所需的类型转换.除了类型安全之外,我对其他任何事情都更感兴趣.
编辑:谢谢马克格拉维尔和肖恩的答案.对不起,我只能选1作为答案,所以我会投两票.
是否可以在winform上使用ocx(ActiveX控件)(可能以编程方式添加它),而不首先在regsrv32中注册ocx?
我想要实现的是启用xcopy安装.我有从我的开发机器生成的"AxInterop .dll"和"Interop .dll"文件.
我已经看到了在没有先注册它的情况下调用COM dll的可能性(ProSysLib,据作者说,但我还没有测试过),因为ocx也是基于COM的,所以我认为必须有一些方法来也这样做.
如果使用单词更难解释,让我们看一个例子,我有一个像这样的泛型函数
void FunctionA<T>() where T : Form, new()
{
}
如果我有反射类型,如何将其与上述功能一起使用?我很期待这样做
Type a = Type.GetType("System.Windows.Forms.Form");
FunctionA<a>();
原因上述方法不起作用.
对于我的应用程序,我将一些配置文件与程序集(exe)一起存储在xml中,还有一些其他临时文件用于处理目的.
我".\\"和他发现了一些怪癖Application.StartupPath.
我一直在用
String configPath = ".\\config.xml";
它工作正常,直到我打电话OpenFIleDialog打开其他文件夹中的某些文件,上面的语句失败.显然".\"指的是"CurrentDirectory",每当我们浏览到另一个文件夹时它就会改变.
在某些时候,我正在使用
String configPath = Path.Combine(Application.StartupPath + "config.xml");
在某些时候,当我需要通过使用从另一个文件夹执行此程序集时Process.Start(),事情开始崩溃.显然工作目录设置不正确,Application.StartupPath实际上是指工作目录而不是正在执行程序集的目录,正如我所假设的那样.所以我不得不求助于使用ProcessInfo将工作目录设置到程序集的目录中.当我写VSTO时,我也有这个问题.
所以,我的问题是,什么是获得程序集正在执行的当前目录的最好,最简单和最有保证的方法,没有我刚刚提到的那些怪癖(或误解)?
编辑:我的意思是获取程序集所在的目录
编辑:根据MSDN上AppDomain.BaseDirectory,它似乎可以运行,这是我不想要的东西(我想弄清楚,不是我不想允许更改BaseDirectory,而是,当在改变我检索它而不确定它是否已被更改)
编辑:我注意到一个相关的问题早就发布了.什么会导致正在执行的应用程序的当前目录发生变化?
谢谢你的回答.
如果我要将.Net Framework安装文件与我的应用程序一起包含(安装过程由我们自己的技术人员完成),要安装在干净的Windows(XP SP2/SP3或Vista SP1)上,而无需事先安装任何框架,我需要按顺序安装.Net Framework设置才能获得3.5 SP1?目前我有以下设置文件:
所有可再发行版本.
编辑:我需要完整安装,客户端配置文件将无法正常工作,因为我们客户的机器可能无法访问互联网.基本上我需要一个安装即忘记的程序,所以当我们决定在之后的3.5 SP1中使用任何新东西时,我们可以放心,我们可以简单地应用更新我们的应用程序,而无需安装另一个先决条件
我最近将BackupDirectory注册表中 SQL Server 2008 R2 实例的默认设置从改为 ,从那时I:\起K:\,每当我尝试使用 SSMS 进行备份或恢复时,都会收到错误消息  
无法访问指定的路径或文件
当我浏览路径时。
 
 
它发生在根目录和K:\. 如果我输入I:\路径并浏览,就不存在这样的问题。我复制了权限I:\,后来添加了 SQL 的服务帐户并MSSQLSERVER具有K:\完全访问权限。我什至尝试添加Everyone完全访问权限,但它仍然显示相同的错误。我用谷歌搜索了一下,发现了很多类似的问题,但没有适合我的解决方案。我也测试master.sys.xp_dirtree过K:\,没有报错。我什至尝试过procmon.exe,但没有迹象表明出了什么问题
K:\是我们 SAN 中新创建的池,仅分配用于备份。SQL Server 是 Windows 2008 R2 故障转移群集的一部分。和I:\都K:\配置为 SQL Server 的群集资源。
仅供参考,我使用 SQL Server 帐户登录 SSMS,因为我的计算机不属于域。I:\但这从一开始就不是问题。
编辑:如果我使用 T-SQL 备份/恢复,则不会出现错误,这意味着 SQL Server 的读/写权限K:\是正确的。
我正在研究串行端口,以8位数据向某些硬件发送和接收数据.我想将它存储为字符串以便于比较,并且预设数据以字符串或十六进制格式存储在xml文件中.我发现只有在使用ANSI编码的Encoding.Default时才能正确转换8位数据,并且很容易可逆.ASCII编码仅适用于7位数据,UTF8或UTF7也不适用,因为我使用的是1-255中的某些字符.Encoding.Default会很好,但我在MSDN上读到它依赖于OS代码页设置,这意味着它可能在配置的不同代码页上表现不同.我使用编码广泛使用GetBytes()和GetString,但是想要一种在任何配置下始终可用的故障安全和可移植方法.
我正在写一个插件。它有一些工作要由 wp_cron 执行。现在在脚本中,它会自动创建/编辑一些帖子。那么哪个用户将运行 cron 作业呢?
我还注意到调用时失败WP_Filesystem()
我正在使用view来完成大部分关于MySQL数据的报告.在其中一个表中,我想在选择数据时将特定列视为ENUM,但它当前是int.
我知道可以使用内部联接来实现这一点,但我会将其作为我的最后选择.
有没有办法构建视图或选择查询,以便我可以将int类型转换为枚举并具有字符串输出而不是int?就像是
SELECT CONVERT(int_column, ENUM('A', 'B', 'C')) FROM table;
我需要将该列存储为int,将列更改为枚举将需要在应用程序级别进行太多更改,并且这只需要一个特定的报告,所以应该没问题.枚举只有11个值.
如果无法进行铸造,那么可以选择三级操作员还是内联工程?
谢谢