以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  关于全部文本框不可编辑问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=69762)

--  作者:dj68301367
--  发布时间:2015/6/10 14:49:00
--  关于全部文本框不可编辑问题
无法将类型为“Foxtable.WinForm.Label”的对象强制转换为类型“Foxtable.WinForm.TextBox”。

错误如上,代码如下,怎么修改

e.Form.Controls("Txt料号").value=mparno
For Each MyForm As WinForm.TextBox In e.Form.Controls
    If Typeof Myform Is winform.textbox Then
        Dim Mc As winform.textbox =myform
        mc.Enabled= False
    End If
Next

--  作者:Bin
--  发布时间:2015/6/10 14:50:00
--  
呵呵.帮助就有现成代码告诉你如何写


--  作者:dj68301367
--  发布时间:2015/6/10 15:02:00
--  
以下是引用Bin在2015/6/10 14:50:00的发言:
呵呵.帮助就有现成代码告诉你如何写



我就是看着帮助来写的.... 但是还是有错误。

判断控件类型

如果我希望清除窗口中所有文本框的内容,显然只能使用遍历才能完成这样的任务。
但是遍历控件的时候,只能使用WinForm.Control类型的变量,但是这样的变量又不能访问文本框的Value属性。
所以只能在遍历控件的时候判断控件类型,然后用具体的控件类型变量来引用控件:

For Each c As WinForm.Control In e.Form.Controls
    If
 Typeof c Is WinForm.TextBox Then \'判断控件是否是文本框
        
Dim t As WinForm.TextBox = c \'使用特定类型的变量引用控件
        t.Value = 
Nothing
    End
 If
Next

判断变量是否是某类型的语法是:

Typeof 变量 Is 类型

如果变量是指定的类型则返回True,否则返回False。

本节介绍的派生原理,不仅适合窗口设计,也适合今后要介绍的菜单设计。



--  作者:大红袍
--  发布时间:2015/6/10 15:03:00
--  
For Each MyForm As WinForm.Control In e.Form.Controls
    If Typeof Myform Is winform.textbox Then
        Dim Mc As winform.textbox =myform
        mc.Enabled= False
    End If
Next