资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

包含enumvb.net的词条

vb.net enum的应用

这个貌似是属性语法错了吧……

创新互联建站坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站制作、成都网站设计、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的北碚网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

应该这样写,绝对不会有问题

Property ReadMonth

Get

Return ……

End Get

Set(value As Month)

…… = value

End Set

End Property

Property ... (... As ...)这么写是错的

在 Excel VBA 中定义类模块,要如何才能自定义 Open 方法或函数? (因为在 VBE 中 Open 是保留字)

不能的,在 VB 中 Open 只能是关键字,

在调用时如果某一过程名不符合 VB 的要求,则需要在其两侧加方括号:

Dim MyCollection As New Collection

Dim NextEnum As Object

Set NextEnum = MyCollection.[_NewEnum]

照理说,与关键字可能发生冲突,也需要加方括号,

但我试了一下,实际不用。

可是,如果在声明一个不符合 VB 的要求的过程名称时,

加方括号却遇到了问题:

Public Sub [Open]() '编译错误

因此 VB 6.0(或是 VBA 6.0)是不支持声明不符合要求的过程名称的。

但在 VB.NET 中是可以的(虽然这么做不被推荐),例如:

Public Sub [Sub]()

Public Function [Property]() As Object

Dim [___] As Long

不过目前还没有见到 VB.NET 取代 VBA 的位置。

除过在 Office 2010 的 InfoPath 中的代码可以在 VB.NET 环境中编辑以外,

甚至 Office 2010 的 Word 还在用 VBA 6.0……

而至于人家 Workbooks,

因为人家用的不是 VB,而是 C,

因此没有这么严格的限制。

所以只能将就一下了……

起个 OpenWorkbook 或是 OpenSheet 之类的,

只要避开关键字就行……

VB.NET的枚举求教解决方法

这个功能实现起来其实也很简单,就是通过反射去读取 DescriptionAttribute 的 Description 属性的值,代码如下所示:

/// summary

/// 返回枚举项的描述信息。

/// /summary

/// param name="value"要获取描述信息的枚举项。/param

/// returns枚举想的描述信息。/returns

public static string GetDescription(Enum value)

{

Type enumType = value.GetType();

// 获取枚举常数名称。

string name = Enum.GetName(enumType, value);

if (name != null)

{

// 获取枚举字段。

FieldInfo fieldInfo = enumType.GetField(name);

if (fieldInfo != null)

{

// 获取描述的属性。

DescriptionAttribute attr = Attribute.GetCustomAttribute(fieldInfo,

typeof(DescriptionAttribute), false) as DescriptionAttribute;

if (attr != null)

{

return attr.Description;

}

}

}

return null;

}

这段代码还是很容易看懂的,这里取得枚举常数的名称使用的是 Enum.GetName() 而不是 ToString(),因为前者更快,而且对于不是枚举常数的值会返回 null,不用进行额外的反射。

当然,这段代码仅是一个简单的示例,接下来会进行更详细的分析。


分享文章:包含enumvb.net的词条
文章链接:http://cdkjz.cn/article/hppede.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220