Articles of .net

ItemDataBound为Windows窗体DataGridView?

我将数组绑定到DataGridView。 我有一个列包含文件path映射到一列button。 我想要预处理文件path,以便DataGridViewButtonColumn只显示文件名(不包含父文件夹)。 在绑定到DataGridView的列之前,如何截取和预处理值? (我在ASP.NET数据绑定中看到过类似的东西,希望能在这里做同样的事情。)

使用WiX检测.NET Framework 4.5.1

我正在使用WiX 3.8在我的解决scheme中创build一个安装程序项目。 作为此安装的一部分,我创build了一些启动条件,其中之一是检查是否安装了Microsoft .NET Framework 4.5.1。 要做到这一点,我想使用WixNetFxExtension库中的一些属性,似乎适用于较旧版本的.NET框架。 有一个如何在http://wixtoolset.org/documentation/manual/v3/howtos/redistributables_and_install_checks/check_for_dotnet.html上这样做的例子。这不适用于.NET 4.5.1,但是因为没有NETFRAMEWORK451属性检查。 查看NetFx451.wxs模块的源代码( http://wix.codeplex.com/SourceControl/latest#src/ext/NetFxExtension/wixlib/NetFx451.wxs ),似乎没有单独的属性可用于.NET 4.5.1,而是它也使用相同的NETFRAMEWORK45。 据我所知,v4.5.1是v4.5的就地升级,所以它使用相同的registry键(我认为)。 无论如何,在这个模块中,他们只需检查从NETFRAMEWORK45返回的版本号如下: DetectCondition="NETFRAMEWORK45 &gt;= $(var.NetFx451MinRelease)" 所以我认为我可以写下如下的条件: <PropertyRef Id="NETFRAMEWORK45" /> <Condition Message="The .NET Framework 4.5.1 was not found. Stopping installation."> <![CDATA[Installed OR (NETFRAMEWORK45 >= 378675)]]> </Condition> 但是,这在我知道安装了.NET Framework 4.5.1的计算机上返回了错误消息。 所以我创build了这样的条件,所以我只能看到从registry中返回的版本号: <PropertyRef Id="NETFRAMEWORK45" /> <Condition Message ="[NETFRAMEWORK45]">0</Condition> 这将显示一个消息框,其中包含以下文本:#378758所以我知道registry中的值是正确的。 所以我有点困惑为什么我的情况失败了。 有没有什么明显的我在这里失踪,还是有其他的方式来比较条件元素中的值? 这里是修复包括由PhilDWbuild议的哈希符号: <PropertyRef Id="NETFRAMEWORK45" /> […]

以编程方式隐藏PropertyGrid中的属性

我正在寻找隐藏/显示属性,取决于用户在下拉select什么。 我正在处理事件的罚款,但实际上不能使正确的属性消失。 我在网上find的解决scheme主要是从2005年开始的,因为我对它的经验很less,所以我认为如果隐藏属性是非常困难的,我一定会做错事情。 到目前为止,我已经尝试访问属性,一旦事件被处理,但ReadOnly和IsBrowsable属性是只读的。 propertygrid有一个属性BrowsableAttributes,它需要一个属性列表,但是只能起负面作用,不能做或者只做和。 提供属性集合; 类别 – “testing”和isbrowsable – 真; 返回那些匹配两者,因为我不能提供多个AttributeCollections我不能使search的具体情况足以隐藏必要的,同时使其他人可见。 过去几个小时,我一直把头撞在墙上,认为必须有一个更简单的方法。

哪个.NET框架版本将被包含在Windows 7中?

有谁知道微软是否已经决定明年(2009年) 在Windows 7中发布哪个版本的.NET框架 ? 它会.NET 3.5(SP 1)或者4.0?

如何使用C#从Windows服务访问Linux目录/文件

我有一个C#Windows服务,需要访问Linux计算机以获取特定目录中的文件列表。 什么.NET 3.5SP1方法将使用,允许我这样做? 谢谢。

在没有FILE_SHARE_DELETE的情况下重命名在另一个进程中打开的文件

使用Windows API,可以重命名另一个进程中没有FILE_SHARE_DELETE权限的文件吗? 我认为这是不可能的基于CreateFile文档说: 注意 :删除访问权限允许删除和重命名操作。 与此相一致的是,通过在最终用户命令提示符中进行常规rename ,我经常遇到The process cannot access the file because it is being used by another process. ; 通过最终用户GUI和通过python的os.rename重命名os.rename发生类似的错误。 然而, 这个高度回应的答案似乎恰恰相反: 如果任何其他进程打开文件而不删除共享,删除将失败,重命名从来不是一个问题。 这不仅仅是一个小点, 整个答案取决于这个陈述:它只解决OP问题,如果重命名不会失败,当删除。 我错过了什么? 注意:如果有问题,我指的是使用C ++ API的Windows 10(我认为它比C#API更强大)。 编辑:移动代码片段到一个新的问题 。

当用户试图打开一个新的实例时,返回到一个已经打开的应用程序

这是我一直未能弄清楚的问题。 防止第二个实例是微不足道的,并且有很多方法,但是,将已经运行的过程带回来不是。 我想要: 最小化:撤销最小化并将运行实例放在最前面。 在其他窗口后面:将应用程序放在前面。 我使用的语言是VB.NET和C#。

如何检测Windows 10在Windows窗体应用程序中进入平板电脑模式的时间?

更新 虽然不是最优雅的解决scheme,似乎工作的一种方法是观察相关的registry值。 以下是使用WMI执行此操作的示例。 如果有比这更好的解决scheme,我很乐意听到任何人的消息。 using System; using System.Management; using System.Security.Principal; using System.Windows.Forms; using Microsoft.Win32; public partial class MainForm : Form { public MainForm() { this.InitializeComponent(); this.UpdateModeFromRegistry(); var currentUser = WindowsIdentity.GetCurrent(); if (currentUser != null && currentUser.User != null) { var wqlEventQuery = new EventQuery(string.Format(@"SELECT * FROM RegistryValueChangeEvent WHERE Hive='HKEY_USERS' AND KeyPath='{0}\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\ImmersiveShell' AND ValueName='TabletMode'", currentUser.User.Value)); var […]

.NET模拟Ctrl + Alt + Del键

所有在标题中说,我怎样才能模拟组合Ctrl + Alt + DEL ? 我试过这个: SendKeys.Send("^(%({DEL}))") SendKeys.Send("^(%{DEL})") SendKeys.Send("^%{DEL}") 但没有工作。 我正在使用VB.NET和Windows XP SP3

我怎样才能让我的.NET应用程序自己擦除?

我怎样才能让我的C#应用​​程序擦除自己(自毁)? 以下是我认为可能有效的两种方法: 提供另一个删除主程序的程序。 但是,删除程序如何被删除呢? CMD创build一个进程,等待几秒钟,然后删除您的文件。 在这几秒钟内,你closures你的应用程序。 这两种方法似乎效率低下。 我有一种感觉,有一些内置的标志或Windows中允许这样的东西。 我应该怎么做? 另外,你可以提供一些示例代码? 更新:谢谢你所有的答案! 我要去尝试他们,看看我能得到什么。 首先,有人问我为什么要我的应用程序来做到这一点。 答案就在这里:前几天,我阅读了Joel Spolsky在其博客上发布的“Aardvark项目规范”,并提到客户端应用程序会在远程会话后自行删除。 我想知道这是如何工作的,以及如果我需要这样做,我可以完成这样的壮举。 以下是对build议的一些概述: 创build一个registry项,告诉Windows在重新启动时删除该文件 使用ping命令启动CMD,等待几秒钟,然后删除文件 当然,这两者都有其缺点,正如评论中所概述的那样。 但是,下面列出的这种方法是可行的吗? 有两个可执行文件:Program.exe和Cleaner.exe。 前者是程序本身,后者是删除Program.exe和本身的应用程序(如果它被加载到内存中,就像我将要解释的那样)。 Program.exe(有依赖项)是否可以将所有没有任何依赖关系的Cleaner.exe 加载 到内存中并运行? 如果这是可能的,Cleaner.exe是否可以打包到Program.exe中,然后加载到内存中,然后运行?