关于CTYPE和TYPEOF的问题

问题描述

看2010入门经典中,菜单功能中有如下功能:IFTYPEOFme.activecontrolistextboxthenctype(me.activecontrol,textbox).undo,上面TYPEOF已经判断me.activecontrol是TEXTBOX了,为啥下面还用CTYPE强制转类型,而且不转还不能用UNDO属性,这个机制是什么呀,头疼死了,到处找不到原因。

解决方案

解决方案二:
去搜索下面向对象编程里有关继承的部分,重新学习下父类和子类的关系
解决方案三:
我最想知道TYPEOF已经判断me.activecontrol是TEXTBOX了,为啥下面还用CTYPE强制转类型
解决方案四:
me.activecontrol是个Control类型啊,Control没有这个Undo方法的啊。不强制转类型就没法调用TextBox的方法的。
解决方案五:
直接转换如果不是textbox那么就会失败崩溃所以要先看看能不能这么做
解决方案六:
引用2楼renjie0310的回复:

我最想知道TYPEOF已经判断me.activecontrol是TEXTBOX了,为啥下面还用CTYPE强制转类型

灰常有道理
解决方案七:
这样说吧,me.activecontrol一个人带着面具Control,而你要他干活Undo,不过有道安检CTYPE拦住了他TYPEOF只是做为判断是否是这个人,然后呢判断完是这个人了,但他面具Control还在呀,所以这个安检CTYPE呢要把他面具给摘下来变成TextBox,才能进去干活Undo
解决方案八:
结贴,c#给拉我答案,说实话vb.net学起来资源太少,c#教材将基础概念讲到家拉。
解决方案九:
代码应该这样写Dimc=CType(Me.ActiveControl,TextBox)IfcIsNotNothingThenc.Undo()

只要进行一次转换。CType相当于c#的as二元操作符,并不是强制类型转换。说“ctype相当于c#的强制类型转换)这就是错的,这种理解就会造成你那种多余进行了一次转换的代码。
解决方案十:
说“ctype相当于c#的强制类型转换”这就是错的,误认为ctype是强制类型转换,于是就额外地先去判断了一次类型继承。这是一个技术问题。你就算是到c#文档中找原因,如果反过来对于自己使用的vb.net的机制(与c#的差别)不熟悉,也会错误套用c#的东西的。
解决方案十一:
引用9楼以专业开发人员为伍的回复:

说“ctype相当于c#的强制类型转换”这就是错的,误认为ctype是强制类型转换,于是就额外地先去判断了一次类型继承。这是一个技术问题。你就算是到c#文档中找原因,如果反过来对于自己使用的vb.net的机制(与c#的差别)不熟悉,也会错误套用c#的东西的。

但入门经典教材说,她就是强制转换类型呀?
解决方案十二:
我也一直认为他是强转不成功会失败的cIsNotNothing没这么写过,因为都是设计上一定能转成功才会这么设计的

时间: 2024-12-07 12:33:11

关于CTYPE和TYPEOF的问题的相关文章

javascript实现检验的各种规则_javascript技巧

本文实例讲述了javascript实现检验的各种规则.分享给大家供大家参考.具体如下: /** * 检验各种规则 * @param str 检验的内容 * @param cType 预设的检验规则 字符串[ * empty, 检验是否为空 * telphone, 座机手机号码 * allphone, 所有手机号码 * ydphone, 移动手机号码 * ltphone, 联通手机号码 * dxphone, 电信手机号码 * email, 邮箱 * url, 网址 * cn, 汉字 * image

javascript常用正则表达式汇总_javascript技巧

javascript常用正则表达式汇总 /** * 检验各种规则 * @param str 检验的内容 * @param cType 预设的检验规则 字符串[ * empty, 检验是否为空 * telphone, 座机手机号码 * allphone, 所有手机号码 * ydphone, 移动手机号码 * ltphone, 联通手机号码 * dxphone, 电信手机号码 * email, 邮箱 * url, 网址 * cn, 汉字 * image, 图片格式 * emscode, 邮政编码 *

isdigit <ctype.h> <cctype>

原文:http://www.cplusplus.com/reference/clibrary/cctype/isdigit/ int isdigit ( int c ); 检查字符是否是十进制数字 检查参数c是否是一个十进制数字. 十进制数字包括以下几个数字: 0 1 2 3 4 5 6 7 8 9  想要得到不同的ctype函数在处理每个标准ANSII字符返回值的详细图表,请阅读参考<cctype>头文件. 在C++语言中,一个特定于语言环境模版版本的isdigit函数存在于头文件<l

isgraph &amp;lt;ctype.h&amp;gt; &amp;lt;cctype&amp;gt;

原文:http://www.cplusplus.com/reference/clibrary/cctype/isgraph/ int isgraph ( int c ); 检查一个字符是否是可显示字符. 检查参数c是否是一个可显示字符.可显示字符包括那些可以打印出来(由isprint返回值决定),不被认为是可显示字符的空格符(例如 ' ')除外. 想要得到不同的ctype函数在处理每个标准ANSII字符返回值的详细图表,请阅读参考<cctype>头文件. 在C++语言中,一个特定于语言环境模版

isupper &amp;lt;ctype.h&amp;gt; &amp;lt;cctype&amp;gt;

原文:http://www.cplusplus.com/reference/clibrary/cctype/isupper/ int isupper ( int c ); 检查一个字符是否是大写字母 检查参数c是否是一个大写字母 请注意哪些字符会被认为是大写字母可能依赖于当前正在使用的locale本地设置:在默认的c语言本地设置下,以下任何一个都是一个大写字母: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 想要得到不同的ctype函数在

ispunct &amp;lt;ctype.h&amp;gt; &amp;lt;cctype&amp;gt;

原文:http://www.cplusplus.com/reference/clibrary/cctype/ispunct/ int ispunct ( int c ); 检查字符是否是标点符号 检查参数c是否是标点符号.任何一个不是字母或者数字(isalnum)的可显示字符(isgraph)都是一个标点符号. 想要得到不同的ctype函数在处理每个标准ANSII字符返回值的详细图表,请阅读参考<cctype>头文件. 在C++语言中,一个特定于语言环境模版版本的ispunct函数存在于头文件

iscntrl &amp;lt;ctype.h&amp;gt; &amp;lt;cctype&amp;gt;

原文:http://www.cplusplus.com/reference/clibrary/cctype/iscntrl/ int iscntrl ( int c ); 检查一个字符是否是控制字符 检查字符c是否是一个控制字符 对于标准的ASCII字符表来说,控制字符是指那些ASCII码在0x00 (NUL) 和 0x1f (US)之间的字符,加上0x7f (DEL).另外一些特定平台的某些编译器可能会把扩展字符(ASCII码0x7f以后)定义为新增加的控制字符. iscntrl和isprin

typeof 运算符

运算   返回一个用来表示表达式的数据类型的字符串. typeof[()expression[]] ; expression 参数是需要查找类型信息的任意表达式. 说明 typeof 运算符把类型信息当作字符串返回.typeof 返回值有六种可能: "number," "string," "boolean," "object," "function," 和 "undefined." ty

javascript typeof 操作符

typeof 操作符 typeof 操作符(和 instanceof 一起)或许是 JavaScript 中最大的设计缺陷, 因为几乎不可能从它们那里得到想要的结果. 尽管 instanceof 还有一些极少数的应用场景,typeof 只有一个实际的应用(译者注:这个实际应用是用来检测一个对象是否已经定义或者是否已经赋值), 而这个应用却不是用来检查对象的类型.     注意: 由于 typeof 也可以像函数的语法被调用,比如 typeof(obj),但这并是一个函数调用.     那两个小括