将 C# 语句体 lambda 转换为 VB

2023-12-09

VS8 中的 VB 似乎不支持/转换带有语句主体的 lambda 表达式。我在 C# 应用程序中使用它们,但现在必须将其转换为 VB。

我正在动态创建一大堆控件,并且我希望能够动态地为它们提供事件处理程序。这样我就可以从数据库构建动态用户界面。在下面的代码中,我将创建一个表单和一个复选框,使复选框控制表单的可见性,向表单添加一些方法处理程序,然后将新创建的复选框添加到预先存在的表单/面板等。例如,表单的处理程序会影响复选框:

  // Inside some loop creating a lot of these forms and matching checkboxes
      Form frmTemp = frmTestPanels[i];  // New form in array
      CheckBox chkSelectPanel;          // New checkbox that selects this panel
      chkSelectPanel = new CheckBox();
      chkSelectPanel.Text = SomeName;   // Give checkbox a label
      chkSelectPanel.Click += (ss, ee) =>  // When clicked
      {
          label1.Text = SomeName;       // Update a label
          if (chkSelectPanel.Checked)   // Show or hide the form
          {
              frmTemp.Show();
          }
          else
          {
              frmTemp.Hide();
          }
      };

      frmTemp.VisibleChanged += (ss, ee) =>  // When form visibility changes
      {
          chkSelectPanel.Checked = frmTemp.Visible;  // Reflect change to checkbox
          ConfigurationFileChanged = true;   // Update config file later
      };

      frmTemp.FormClosing += (ss, ee) =>     // When the form closes
      {   // We're only pretending to close the form - it'll sit around until needed
          chkSelectPanel.Checked = false;    // Update the checkbox
          frmTemp.Hide();                    // Hide the form
          ee.Cancel = true;                  // Cancel the close
      };

      flpSelectGroup.Controls.Add(chkSelectPanel); // Add checkbox to flow layout panel
  // End of loop creating a bunch of these matching forms/checkboxes

当然,我遇到了转换错误:

VB 不支持带有语句体的匿名方法/lambda 表达式

我真的很喜欢动态创建所有内容,然后让对象自行处理的能力 - 我不需要添加任何特殊函数来确定哪个表单提供关闭事件,以便它可以搜索正确的复选框并更新复选框 - It Just Works (TM)。

不幸的是它需要转换为VB。

将 lambda/匿名语句体转换为可在 VB 中运行的内容的最佳方法是什么,特别是当需要创建其中许多语句体时?


等待.NET 4的最新版本,它将支持VB中的此类功能。看不到其他选择。

丑陋的替代品是:

  1. 这可行,但您可以在函数中使用单个语句。

    AddHandler Me.Click, Function(o, e) MessageBox.Show("text")
    
  2. 创建一些常规的 Sub Foo

    Public Sub Foo(ByVal o As Object, ByVal e As EventArgs)
         MessageBox.Show("text")
    End Sub
    

    and use AddHandler将其绑定到事件

    AddHandler Me.Click, AddressOf Foo
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 C# 语句体 lambda 转换为 VB 的相关文章

  • 将可见性属性绑定到变量

    我有一个Border with Label里面一个Window
  • 强制枢轴项目在显示之前预加载

    我有一个带有多个 PivotItems 的 Pivot 其中一个包含一个画布 将其项目放置在动态位置 取决于数据 我获取数据 并且可以在用户选择该项目之前将这些项目放置在其位置 这不是第一个枢轴 但是 只有当我选择 PivotItem 时
  • 在列标题上绘制矩形

    I m painting rectangle on the column headers in datagridview but on scrolling to right it disappears as in the picture s
  • System.Drawing.dll / NumericUpDown 的 .NET 访问冲突异常

    我遇到了一个非常愚蠢的问题 我已经尝试完全重新安装 NET 但它没有解决问题 我什至无法通过谷歌搜索找到其他有同样问题的人 就在我的计算机上 如果我将 NumericUpDown 控件添加到 NET 项目中的窗体并运行该应用程序 则在运行该
  • 剃刀 2 到剃刀 3 MVC 5

    我一直在开发 MVC 4 解决方案 并且一直在尝试将其升级到 MVC 5 我已按照概述的步骤操作here http www asp net mvc tutorials mvc 5 how to upgrade an aspnet mvc 4
  • 为什么Java不支持C中的clrscr这样的函数?

    我有一个问题 对很多人来说可能听起来很愚蠢 但我不能停下来把它发布在这里 因为在互联网上找不到任何东西 为什么java没有我们在C中使用的clrscr之类的函数 如果我创建了一个基于用户输入反复迭代的 java 控制台应用程序 然后如果我想
  • 无法将 User32.dll 导入 Visual Studio

    I tried To add 用户32 dll from 参考管理器 并将其导入自Windows System32 user32 dll I got 错误信息 无法添加对 C Windows System32 user32 dll 的引用
  • 在硬件不足的情况下进行编码

    我目前正在使用 C 中的 SIMD 指令进行编码 并尝试使用 IDE 在实时编码时显示错误 拼写错误等 问题是 我使用的是 AVX512 指令 我的硬件不支持这些指令 只有我用于编译的服务器支持 有没有一种方法可以在 IDE 中进行错误检查
  • std::function 中参数的自动动态转换

    我们有多态类 A 和 B 例如 struct A virtual A struct B final public A void f std cout lt lt f lt lt std endl 我想分配一个变量std function
  • 更改 ASP.NET 控件的访问修饰符

    如果我像这样将控件放入 aspx 文件中
  • UWP 关闭信息亭模式

    我有一个发布到 Windows 应用商店的 UWP 应用程序 并且该应用程序可以启动进入信息亭模式 分配访问权限 它工作得很好 但我尝试在应用程序上创建一个按钮来关闭信息亭模式并返回到 Windows 登录屏幕 我尝试了文档中给出的代码 h
  • Caliburn.Micro 事件聚合器

    如果这是一个非常愚蠢的问题 请道歉 但我刚刚开始使用 caliburn micro 我正在努力获取 eventAggregator 似乎没有任何内容订阅 我不确定问题是出在视图模型还是引导程序上 这是视图模型 class MainWindo
  • Lambda 通过引用捕获右值引用

    下面的代码标准正确吗 godbolt https godbolt org z VE0NWz IE by ref 捕获表示临时的转发引用 并从函数返回结果 lambda 按值 在同一个表达式中 当然 存储 lambda 供以后使用会使其包含悬
  • EF5、SQL Server、经度和纬度

    我发现在 SQL Server 中存储纬度和经度的最佳类型是十进制 9 6 参考文献 1 在 SQL 数据库中存储纬度和经度数据时应使用什么数据类型 https stackoverflow com questions 1196415 wha
  • OpenMP while 循环中的手动同步

    我最近开始使用 OpenMP 为大学的一个项目做一些 研究 我有一个矩形且均匀分布的网格 在该网格上我使用迭代方案求解偏微分方程 因此 我基本上有两个 for 循环 网格的 x 方向和 y 方向各一个 并由 while 循环包裹以进行迭代
  • 为什么转发引用与右值引用具有相同的语法?

    我刚刚对这些 相当 新的功能做了一些研究 我想知道为什么 C 委员会决定为它们引入相同的语法 看来开发人员不必要浪费一些时间来理解它是如何工作的 而一种解决方案可以让我们思考进一步的问题 就我而言 它是从问题开始的 可以简化为 includ
  • Oracle DataAccess 相关:“动态程序集中不支持调用的成员。”

    据我了解 此类错误已在 SO 上讨论过多次 有些人认为这是 DLL 文件中的错误 有些人通过更改 DLL 版本来解决 其他人似乎没有任何线索 无论如何 我只是发帖试试运气 在 C GUI 上的网格中选择一行时 我的应用程序崩溃了 stack
  • C++中main函数可以调用自身吗?

    谁能告诉我下面的代码有什么问题吗 int main return main 我测试了一下 编译正确 它永远运行 幕后还有什么阴谋吗 TLDR 呼叫main导致未定义的行为 标准中使用的术语以及对程序员和编译器的影响似乎存在混淆 首先 单独的
  • C#无循环方式将字符串拆分为多维数组或锯齿状数组

    如何在不循环的情况下将字符串拆分为多维数组或锯齿状数组 我看到一个代码片段 其中有人使用文件流执行此操作 但我不知道如何使其适用于我的字符串 我的字符串类似于1 2 3 1 4 1并可以分为ID Qty 这是我看到的代码 string li
  • 在 C++ 中,将 float 转换为 double 再转换回 float 是否给出相同的值

    假设在下面的代码中 float f1 double d1 static cast

随机推荐

  • WP7 将文本环绕图像

    我有这个代码
  • 如何使用 Google Cloud Shell 安排 shell 脚本?

    我有一个存储在 GCS 中的 sh 文件 我正在尝试通过 google cloud shell 安排 sh 文件 我可以使用运行相同的文件gsutil cat gs miptestauto baby sh sh命令但无法安排它 以下是我用于
  • SMTP GMAIL 连接

    我无法使用 PHPMailer 连接到 SMTP GMAIL 这是错误 2015 年 6 月 25 日 22 54PM 出错 stream socket client 无法 连接到 smtp gmail com 587 连接超时 home
  • 获取有关 Swift 中进程的信息

    我正在尝试获取有关 Swift 中流程的一些数据 我使用这段代码作为起点 pid t pid 10000 rusage info current rusage if proc pid rusage pid RUSAGE INFO CURRE
  • Angular 没有给出复选框的当前状态

    我已经开始构建一个 ToDo 示例应用程序 我面临一个奇怪的问题 下面是待办事项列表的 HTML 代码 在该列表中 我为复选框设置 ngModel 并触发更改事件 监听变化的代码 我只将当前状态打印到控制台 看下图 您可以看到复选框的当前状
  • Linux 上的 pthreads 是如何被调度程序看到的

    我有一个关于 Linux 上 pthread 实现的问题 假设一个进程有5个线程 现在调度程序如何看到这些线程 或根本看不到 例如当调度程序被调用时 它是否只调度主进程 然后主进程有责任在每个线程之间进行调度 或者是另一种方式 调度程序调度
  • 为什么必须限定重载模板基类方法的范围?

    我似乎无法在不将范围限定到基类的情况下调用基类的方法 这似乎是因为我重载了该方法 如果我不重载该方法 那么编译器不会抱怨 这是我想做的一个例子 struct BaseClass template
  • 是否可以在 go 插件和应用程序之间共享自定义数据类型?

    我知道可以查找导出的 go plugin 符号并将它们键入到界面 但是 我想知道是否有一种方法可以将它们键入到结构中 例如 有办法做到吗 例如 插件 go package main type Person struct Name strin
  • 如何检查Android设备是HDPI屏幕还是MDPI屏幕?

    我想检查这个以通过互联网获取不同的图像 怎么做 density getResources getDisplayMetrics density return 0 75 if it s LDPI return 1 0 if it s MDPI
  • 在android中将文件写入sdcard

    我想在 SD 卡上创建一个文件 在这里我可以创建文件并将其读 写到应用程序中 但我想要的是 文件应该保存在 SD 卡的特定文件夹中 我怎样才能做到这一点使用FileOutputStream create file public void c
  • UITableViewCell 子类布局在禁用自动布局的故事板中混乱

    我在故事板中创建了一个带有原型单元的表格视图 并且在 Xcode 5 中未选中 使用自动布局 cells是UITableViewCell的子类 主要是添加IBOutlets 里面没有任何代码 结果是布局混乱 我尝试更改自动调整大小蒙版 但没
  • 证书签名请求中手动创建的签名与 openssl req 生成的签名不匹配

    使用以下命令创建证书签名请求 openssl genrsa out test key 2048 openssl req new key test key subj CN foo out foo csr 在提供的步骤的帮助下 marc我从中提
  • 从 HTML PHP 联系表单中删除错误字符

    PHP 新手 但取得新进展 我有一个联系表单 在用户提交后会发送电子邮件 现在我想通过删除坏字符或任何可能破坏电子邮件的内容来改进此表单 该电子邮件将由我阅读 因此从技术上讲我可以浏览所有垃圾邮件 但我不想这样做 我想要一封干净的电子邮件用
  • PHP OOP:每个参数类型都有唯一的方法?

    我正在写一些自制的 ORM 学术兴趣 我试图将 TDD 概念作为一项培训练习 并且作为该练习的一部分 我在开发课程时为 API 编写文档 举个例子 我正在研究一个经典的 getCollection 类型映射器类 我希望它能够检索特定用户的资
  • 将字节数组转换为 Angular6 中的图像

    我已从服务器发送字节数组中的图像文件 现在我必须将其转换为jpeg文件并将其显示在网页中 Code app get getPhoto hash function req res console log req params hash inv
  • 将 std::string 转换为 std::chrono::duration

    我的目标是转换一张单曲string以形式 H M S to chrono duration in C 11 举个例子 为了转换 00 15 00 我想出了以下间接解决方案 我计算了两个时间点 1 00 15 00 和 2 00 00 00
  • querySelectorAll 检测输入中的值

    我有多个输入 我想根据用户是否在其中输入值来进行区分
  • 将数据插入 netezza 中的外部表时出现错误 [08S01] 通信链路失败

    我正在尝试将数据从文本文件加载到外部表中Netezza 这是我的命令 INSERT INTO XTABLE DHARMESH SELECT FROM EXTERNAL C Dhams mergeresult txt USING delimi
  • 圆 - 线相交无法正常工作?

    我在之后写了这个圆线相交检测http mathworld wolfram com Circle LineIntersection html 但看起来像是这样 或者我错过了一些东西 public static bool Intersect V
  • 将 C# 语句体 lambda 转换为 VB

    VS8 中的 VB 似乎不支持 转换带有语句主体的 lambda 表达式 我在 C 应用程序中使用它们 但现在必须将其转换为 VB 我正在动态创建一大堆控件 并且我希望能够动态地为它们提供事件处理程序 这样我就可以从数据库构建动态用户界面