我正在尝试向我动态创建的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
如何以编程方式将此事件处理程序添加到我的标签中?一旦我有更多标签被同一个功能处理?
答案 0 :(得分:1)
您错过了AddressOf
operator:
AddHandler btnLink.MouseLeftButtonUp, AddressOf btnLink_Clicked
在VB.NET中,每次引用方法(子或函数)时都必须使用AddressOf
而不调用/执行它。例如,如果要将其作为参数传递给另一个方法/语句/运算符,或者如果要将其存储在变量中并在代码中使用它。
这是必需的,因为AddressOf
会为您的方法创建Delegate
。 Delegate
基本上是方法指针周围的面向对象的包装器,这意味着您现在可以像处理.NET中的任何其他对象一样对待它。