.NET enum.HasFlag()错误? - c#

我正在使用以下.NET 4.5.2代码:

if (this.ContainsFocus && keyData == (Keys.Tab|Keys.Shift))
{ ... }

当ContainsFocus(bool = true)和keyData(System.Windows.Forms.Keys)为Keys.O时,为什么表达式为true? Keys.Shift?

如您所见,断点被击中:

具有以下值:

该错误(?!)的解决方法是:

if (this.ContainsFocus && (int)keyData == (int)(Keys.Tab|Keys.Shift))
{ ... }

参考方案

不,HasFlag没有错误。不幸的是,.NET FlagsAttribute全部或全部都不存在,并且System.Windows.Forms.Keys的定义方式只能将Keys.Modifiers用作标志。

来自https://msdn.microsoft.com/en-us/library/system.windows.forms.keys%28v=vs.110%29.aspx

Keys类包含用于处理键盘输入的常量。的
Key枚举的成员由一个键代码和一组
修饰符组合成一个整数值。在Win32中
应用程序编程接口(API)的键值有两个部分,
包含密钥代码的高阶位(与
Windows虚拟密钥代码),以及代表密钥的低位
修改键,例如SHIFT,CONTROL和ALT键。

结果,您可以使用Keys.Shift检查任何修饰符(Keys.AltKeys.ControlHasFlag),但不能检查其他任何修饰符。

从JAVA调用方法C#.NET - java

我有一个C#.NET项目中创建的dll,我想从Java程序中调用方法。我想知道是否存在实现此目标的机会,然后遇到了JNA和JNI。我应该使用哪一个?有什么建议么?我只需要在使用C#.NET编写的类中调用方法并处理Java程序的结果即可。 参考方案 这取决于您的应用程序,但是您可以将C#DLL放在服务中,例如WCF并以这种方式将功能公开给Java代码。使用ws…

来自枚举Asp.net MVC的可本地化下拉列表 - c#

我有下拉列表,从下拉列表中填充。我的解决方案项目由两部分组成:域和UI项目。这个枚举是域模型的一部分,因此被放置在域项目中。public enum ActivityStatus { InProgress = 0, Completed = 1, Freezed = 2, NotStarted = 3, None = 4 } 我想使用RESX文件本地化UI上的下…

从ASP.NET 1.1转换为ASP.Net 3.5后,单选按钮停止工作 - javascript

[我在下面以FYI的形式发布我们的问题和解决方案。如果您有Microsoft或代表机构对此问题的正式声明,我会将其标记为答案。否则,我下面的帖子将作为答案]。问题:我们采用了ASP.Net 1.1程序,并将其转换为ASP.Net 3.5。该页面最初正确显示,默认情况下选中一个单选按钮,并显示一个项目列表(“列表A”)。当我们单击另一个单选按钮时,它将正确显示…

.NET Core解决方案中同时具有API和MVC项目的约定 - c#

我有一个由以下项目构成的ASP.NET Core(.NET Core 2.2)应用程序:API:表示WebAPI(控制器继承ControllerBase)服务:包含API控制器用来访问数据库等的服务数据库:它包含常用的数据库存储库,服务层可利用这些数据库访问数据库现在,我想添加一个与API对话的UI(MVC部分位于.NET核心之前)。 .NET Core如何…

ddl在服务器中未更新-asp.net - javascript

我在ASP.NET c#上工作。我有一个DropDownList。 (runat =“ server”)在$ {document).ready上,我更新了它的值:$(document).ready(function () { document.getElementById("ddl").value = "abc"; ……