将 AddressOf 传递给 VB.NET 中的函数以使用 AddHandler

2024-06-22

我需要将一个函数的引用传递给 VB.NET 中的另一个函数。如何才能做到这一点?

我的函数需要在内部使用 AddHandler,为此我需要向它传递一个处理函数。我下面的代码显然不起作用,但它传达了我需要的想法。

Public Function CreateMenuItem(ByVal Name As String, ByRef Func As AddressOf ) As MenuItem
   Dim item As New MenuItem

   item.Name = Name
   'item.  other options

   AddHandler item.Click, AddressOf Func

   Return item
End Function

还有其他方法可以做到这一点吗? AddHandler 需要以某种方式设置为函数中传递的参数......


函数委托正是您执行此操作所需要的。首先,您需要在类中的某个位置定义委托。当然,更改签名以适合您的活动。

Public Delegate Sub MyDelegate(sender As System.Object, e As System.EventArgs)

您的函数将采用委托作为参数。

Public Function CreateMenuItem(ByVal Name As String, del As MyDelegate) As MenuItem
  ''''
  AddHandler item.Click, del
  ''''
End Function

Public Sub MyEventHandler(sender As System.Object, e As System.EventArgs)
  ''''
End Sub

以下是调用该函数的方法:

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

将 AddressOf 传递给 VB.NET 中的函数以使用 AddHandler 的相关文章

  • 在 Resharper 分析中忽略设计器和生成的文件

    我已经使用 Resharper 几天了 我真的很喜欢这个工具 但是有一件事让我很恼火 我想知道它是否可以改变 我从生成的代码中收到大量问题通知 我的项目中几乎有 1400 个 我想将这些文件设置为忽略 这样它们就不会像使用 StyleCop
  • 将 WindowState 设置为最大化会导致窗口过早出现

    我读到Load事件应该在创建窗口句柄后触发 但是before窗口实际上变得可见 在大多数情况下 这似乎是正确的 但是 我发现当我使用以下命令创建表单时WindowState属性设置为FormWindowState Maximized 通过
  • 绑定到布尔值的可见性的 TargetNullValue

    我有一个Grid whose Visibility使用以下方法将属性绑定到某个模型的布尔属性Converter
  • DbContext 和连接池

    在我继承的应用程序中 基本控制器中有这个 应用程序中的所有其他控制器都继承自该控制器 public BaseController db new MyDbContext db Database Log s gt Debug Write s p
  • 当表单有滚动条时,控件位置是否相对于表单的可见区域?

    我有一个 VB NET 窗体 可以动态创建一组控件 如果窗体上的控件太多而无法查看 窗体将显示滚动条 这是一个自动滚动表单 用户可以向下滚动并单击按钮 这会导致表单发生巨大变化 它会销毁所有控件并根据用户输入绘制新控件 我注意到 如果用户滚
  • 任务取消异常 (ThrowForNonSuccess)

    这是这个问题的延续 多任务延续 https stackoverflow com questions 21154692 task continuiation 我已经按照答案更改了代码 但是现在我收到了TaskCancelledExceptio
  • 特定于文化的日期时间字符串在平台之间不一致

    我有一个测试应用程序 允许用户从组合框中选择区域性 并在多行文本框中显示区域性特定日期 代码如下 public partial class Form1 Form public Form1 InitializeComponent comboB
  • Response.Redirect() 重定向到子文件夹中的页面

    我正在使用一个Response Redirect login aspx 自从我搬家以来login aspx to my Account子文件夹中 我尝试了以下代码 但它不起作用 Response Redirect Account login
  • C# 是“??”吗?运算符线程安全吗?

    大家都知道这不是线程安全的 public StringBuilder Builder get if builder null builder new StringBuilder return builder 那这个呢 public Stri
  • 调试时无法评估表达式

    当调试 asp net 代码 针对 IIS 运行并使用 Visual Studio 2013 并在断点中并尝试使用快速监视评估变量时 我经常遇到 无法评估表达式 的情况 从 asp net 项目文件夹中删除 suo 似乎可以解决问题 重新加
  • Web API 帮助页面显示每个方法的两个版本

    如何避免帮助页面显示我的方法的两个版本 正如你所看到的 我已经设置了一条自定义路线 api property search finnId 但我不希望使用查询参数的那个出现在 帮助 页面中 有办法解决这个问题吗 我正在使用 ASP NET F
  • 变量声明后的一个问号是什么意思? [复制]

    这个问题在这里已经有答案了 在玩开源项目时 我尝试ToStringDateTime 对象被编译器阻止 当我跳到定义时 我看到了这个 public DateTime timestamp 有人可以告诉我这叫什么以及为什么它可能有用吗 这是一个可
  • 新的 SDK 项目在 Visual Studio 中缺少“启动外部命令”

    旧的 NET 项目在调试下有一个选项 允许 启动外部命令 如图所示 当我使用新的SDK样式创建新项目时 我看不到相同的选项 如下图 有办法拿回来吗 两张图片均取自同一个 VS 因此与版本无关 我发现的解决方法是正常运行程序并附加到它 但这并
  • protobuf-net 代码生成器

    我正在将 Google Proto Buffers 合并到我的项目中 Windows 的 protoc exe 生成用于序列化 反序列化的头文件和源文件的方式非常好 我需要 protobuf net 代码生成器 因此 例如 如果我有一个 P
  • End using 是否关闭打开的 SQL 连接

    如果我将 SQLConnection 包装在 using 中 我应该关闭它还是最终 using 处理它 using cn as new system data sqlclient sqlconnection cn open do a bun
  • 更新到 ASP.NET Core 2.0 - 软件包与 netcoreapp2.0 不兼容

    我正在尝试更新到 NET Core 2 0 但在使用参考安装的所有软件包上都遇到这些错误 问题可能是 我正在参考netcoreapp1 0在输出中 Microsoft EntityFrameworkCore Tools DotNet 2 0
  • 有没有更快的方法来获取卷序列号?

    您好 我正在使用此代码来生成机器签名 但执行起来需要相当长的时间 想知道为什么这么慢 有什么更快的方法推荐吗 Public Shared Function DriveSN ByVal DriveLetter As String As Str
  • Visual Basic 中未知长度的数组

    我有一段用 Visual Basic 编写的代码 Dim n As Double i As Integer n 4 Dim Ramp length 1 To 4 As Double For i 1 To n Ramp length i Ce
  • 自动化 WinDBG 或以其他方式从转储文件中提取信息?

    假设我有一个进程的内存转储 我想对其运行报告 所以本质上我想打开 WinDBG 加载 SOS 并运行一个脚本 该脚本运行一些命令 解析输出 然后基于该结果运行更多命令 除了像 SendKeys 这样的黑客行为之外 还有没有办法自动化 脚本化
  • 有关 Endian 性和 .Net 的详细信息?

    我有几个关于字节顺序的问题 这些问题足够相关 我保证将它们作为一个问题提出 1 字节顺序是由 Net还是由硬件决定的 2 如果是由硬件决定的 我怎样才能在C 中找出硬件的字节序 3 字节序是否影响二进制交互 例如 OR AND OR 或移位

随机推荐