以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  关于数据类型的困惑  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=41469)

--  作者:东坡一剑
--  发布时间:2013/10/20 0:01:00
--  关于数据类型的困惑

Dim x As Integer = CInt(e.Form.Controls("矩形起点X").Value)
Dim y As Integer = CInt(e.Form.Controls("矩形起点Y").Value)
Dim jk As Integer = CInt(e.Form.Controls("矩形宽").Value)
Dim jg As Integer = CInt(e.Form.Controls("矩形高").Value)
Dim p As WinForm.Painter = e.Form.Controls("Painter1")
Dim g As Graphics = p.Graphics
Dim ys As Color = e.Form.Controls("颜色").Color
Dim pn As New Pen(ys, e.Form.Controls("线宽").value)
Dim ds = CInt(e.Form.Controls("线型").value)   \'e.Form.Controls("线型").value
pn.DashStyle =ds  \'DashStyle.DashDotDot(此为复制控件Controls("线型")中显示的值)
g.DrawRectangle(pn,x,y,jk,jg)
p.Repaint()

 

上面一段代码,红色代码部分会报错:

 

从字符串“DashStyle.DashDotDot”到类型“Integer" 转换无效

 

但是将其中的ds更换为后面注释的DashStyle.DashDotDot后却不会报错,而这个字符串正是刚才报错时控件中输入的字符串!

而将蓝字部分更换为它后面注释掉的代码仍会报错。

百思不得其解,求教!


--  作者:有点甜
--  发布时间:2013/10/20 21:28:00
--  
 不理解你的意思。你自己msgbox两个值来看看。

 msgbox(DashStyle.DashDotDot & " " & e.Form.Controls("线型").value)

--  作者:东坡一剑
--  发布时间:2013/10/20 22:16:00
--  

感谢点拨!

枚举的值都是整数,只要将e.Form.Controls("线型").value的值设为整数应该就可以了!控件的Value只有string,因此控件中的DashStyle.DashDotDot和代码中的DashStyle.DashDotDot虽然看起来一样,但是值却有天壤之别。

再次感谢!