相关疑难解决方法(0)

VBA:在UserForms上使用WithEvents

我有一个Word用户表单,包含60多种不同类型的控件.我想在每次触发control_change事件时评估表单并更改表单的提交按钮的启用状态.但是,我真的不想在更改事件处理程序上编写和维护60.

forms events vba ms-word event-handling

19
推荐指数
2
解决办法
4万
查看次数

let_ property方法的好奇心

每个.net开发人员都知道属性的概念.粗略的99.99%,它只是一个元数据粘合在一起的两个方法,一个吸气剂和一个设定器.

通常使用add,remove和invoke方法对事件也是如此.

ECMA-335描述了一种"其他"方法语义,适用于属性或事件.从概念上讲,财产或事件可能有多种"其他"方法.

今天是我用"其他"方法偶然发现房产的第一天.当然,它必须与COM有关.EnvDTE程序集中的EnvDTE.Property接口(用于向Visual Studio编写插件)包含一个定义如下的属性:

.property object Value()
{
  .custom instance void [mscorlib]System.Runtime.InteropServices.DispIdAttribute::.ctor(int32) = ( 01 00 00 00 00 00 00 00 ) 
  .get instance object EnvDTE.Property::get_Value()
  .other instance void EnvDTE.Property::let_Value(object)
  .set instance void EnvDTE.Property::set_Value(object)
}
Run Code Online (Sandbox Code Playgroud)

将let_Value定义为:

.method public hidebysig newslot specialname abstract virtual 
        instance void  let_Value([in] object  marshal( struct) lppvReturn) runtime managed internalcall
{
  .custom instance void [mscorlib]System.Runtime.InteropServices.DispIdAttribute::.ctor(int32) = ( 01 00 00 00 00 00 00 00 ) 
}
Run Code Online (Sandbox Code Playgroud)

显然,VB.NET之前的VBScript和VB版本可以使用Let关键字定义属性.并且Let与Set具有相同的签名.我觉得这里有关系.

但有没有人知道这个属性是如何用EnvDTE编写的语言声明的?我怎么能用相同的模式创建一个程序集(不使用ilasm,这太容易了)?还有人遇到类似的财产吗?

有没有人见过其他"其他"属性,可能与这个属性有不同的语义?如果是的话,他们习惯了什么?

.net cil

16
推荐指数
1
解决办法
695
查看次数

使用 `let` 重新声明一个变量会导致“Uncaught SyntaxError: redeclaration of let ...”

我有这样的代码:

let accessAllowed;

accessAllowed = (2>18) ? true : false;
alert(accessAllowed);
Run Code Online (Sandbox Code Playgroud)

但是,当我使用它时:

let accessAllowed;
let accessAllowed = (2>18) ? true : false;

alert(accessAllowed);
Run Code Online (Sandbox Code Playgroud)

结果是一个错误,并且 JavaScript 都不起作用。

作为 JS 的新手,我不确定这是否是let. 我在其他地方找不到任何关于此的信息。

javascript variables variable-declaration

2
推荐指数
1
解决办法
3124
查看次数