我一直绞尽脑汁想弄清楚如何编写这个VB代码
Case frm.hwnd:
在C#中,它将使用long作为测试表达式在switch语句中工作。当我尝试
case (long)frm.Handle:
我的IDE告诉我需要使用常量表达式。我已经尝试将表单句柄转换为long并将其分配给常量长变量
const long frmHandle = new (long)frm.Handle;
并将IntPtr
对象实例化为long
,当我将其用作案例表达式时。
const IntPtr frmHandle = new IntPtr(frm.Handle);
前者导致错误说
指定的值必须是常量
后者导致错误说
IntPtr不能声明为常量
有没有办法仍然使用表单句柄作为案例?
答案 0 :(得分:2)
switch
语句与(编译时)常量表达式一起使用,而不是变量。你不能使用窗口句柄。
const IntPtr frmHandle = new IntPtr(frm.Handle);
frmHandle不是编译时常量。此语法声明在初始化后无法更改。
您可以使用一系列if
语句来实现相同的功能,但使用变量。根据您的实际需要,您可能还会使用窗口句柄作为键来使用字典(值取决于您在此处尝试实现的内容)。
答案 1 :(得分:0)
我认为你必须使用“if”:
DLookup("[NoOfdays]","[TrainingTable]","[TrainingCourse]=" & [TrainingCourse])
切换案例只是更好看,否则; - )