在Switch语句中使用表单句柄处理案例?

时间:2016-06-08 18:53:11

标签: c# vb6

我一直绞尽脑汁想弄清楚如何编写这个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不能声明为常量

有没有办法仍然使用表单句柄作为案例?

2 个答案:

答案 0 :(得分:2)

switch语句与(编译时)常量表达式一起使用,而不是变量。你不能使用窗口句柄。

const IntPtr frmHandle = new IntPtr(frm.Handle);

frmHandle不是编译时常量。此语法声明在初始化后无法更改。

您可以使用一系列if语句来实现相同的功能,但使用变量。根据您的实际需要,您可能还会使用窗口句柄作为键来使用字典(值取决于您在此处尝试实现的内容)。

答案 1 :(得分:0)

我认为你必须使用“if”:

DLookup("[NoOfdays]","[TrainingTable]","[TrainingCourse]=" & [TrainingCourse])

切换案例只是更好看,否则; - )