WPF AddHandler到System.Windows.Controls.Label

时间:2018-01-29 19:09:06

标签: wpf vb.net handler

我正在尝试向我动态创建的Label(System.Windows.Controls.Label)的function downloadGCSFileToDir(storageObj, bucketName, filePath, destinationDir) { return new Promise((resolve, reject) => { console.log("filePath is: " + filePath); const filePathParts = filePath.split("/"); const destination = `${destinationDir}/${filePathParts[filePathParts.length - 1]}`; const options = { "destination": destination }; console.log(options.destination); storageObj .bucket(bucketName) .file(filePath) .download(options) .then(() => { console.log(`gs://${bucketName}/${filePath} downloaded to ${destination}`); resolve({ "destination": destination }); }) .catch(err => reject(new Error(`downloadGCSFileToDir failed: ${err}`))); }); } 添加一个处理程序,但我收到一条错误消息

  

未指定'Private Sub btnLink_Clicked(sender As Object,e As MouseButtonEventArgs)的参数'e'的参数

MouseLeftButtonUp

如何以编程方式将此事件处理程序添加到我的标签中?一旦我有更多标签被同一个功能处理?

1 个答案:

答案 0 :(得分:1)

您错过了AddressOf operator

AddHandler btnLink.MouseLeftButtonUp, AddressOf btnLink_Clicked

在VB.NET中,每次引用方法(子或函数)时都必须使用AddressOf而不调用/执行它。例如,如果要将其作为参数传递给另一个方法/语句/运算符,或者如果要将其存储在变量中并在代码中使用它。

这是必需的,因为AddressOf会为您的方法创建DelegateDelegate基本上是方法指针周围的面向对象的包装器,这意味着您现在可以像处理.NET中的任何其他对象一样对待它。

了解详情: Delegates (Visual Basic) | Microsoft Docs