以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助] 如何得到控件的名称?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=40663)

--  作者:qw123456707
--  发布时间:2013/9/26 10:14:00
--  [求助] 如何得到控件的名称?
我想遍历含有特定字符名称的某类型控件,但是不知道怎么得到控件的名称。。。没有name属性
--  作者:Bin
--  发布时间:2013/9/26 10:14:00
--  
有 NAME属性的啊.
--  作者:jspta
--  发布时间:2013/9/26 10:17:00
--  
以下是引用Bin在2013-9-26 10:14:00的发言:
有 NAME属性的啊.

有些属性不显示的,狐爸应该从新整理完善下了。。


--  作者:Bin
--  发布时间:2013/9/26 10:18:00
--  
精灵提示有时候不太好使,不能全信.
--  作者:qw123456707
--  发布时间:2013/9/26 10:23:00
--  回复:(Bin)精灵提示有时候不太好使,不能全信.
不仅是精灵,帮助文件都没有,我要遍历的是标签控件,通用属性和标签属性都没有name。。。。
强烈建议狐爸补充代码
特别对于不会vb的新手来讲,我们就把帮助文件当做是教科书了,里面有什么就用什么了
或者指引下自我提升的路径也好图片点击可在新窗口打开查看

--  作者:不倒的翁
--  发布时间:2013/9/26 14:53:00
--  
 狐爸是引路人,师傅领进门,修行靠个人。
看懂代码结构是关键,再则,Name这都是通用成员。一通全通。任何控件都少不了。
知道一个就顺藤摸瓜知道其他的。
图片点击可在新窗口打开查看


--  作者:longtechwj
--  发布时间:2013/9/26 15:32:00
--  
For Each c As Winform.Control In Forms(Cstr(args(0))).Controls(Cstr(args(1))).Children
If(Cstr(c.Gettype().Name)="TextBox" Or Cstr(c.Gettype().Name)="ComboBox" Or Cstr(c.Gettype().Name)="NumericComboBox" Or Cstr(c.Gettype().Name)="CheckBox" Or Cstr(c.Gettype().Name)="DateTimePicker") Then
c.Enabled=args(2)
End If
Next

--  作者:longtechwj
--  发布时间:2013/9/26 15:41:00
--  
For Each c As Winform.Control In Forms(Cstr(args(0))).Controls(Cstr(args(1))).Children
    c.Enabled=args(2)
    If(Cstr(c.Name)="Save" Or Cstr(c.Name)="Cancel") Then
    If(args(2)=True) Then
    c.Enabled= False
    Else
    c.Enabled= True
    End If
    End If
Next

--  作者:blackzhu
--  发布时间:2013/9/26 16:57: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。

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


--  作者:longtechwj
--  发布时间:2013/9/26 18:13:00
--  

我有写这样的函数,清空指定的控件内容

Dim i As Integer
For i=0 To Tables(Cstr(args(0))).Cols.Count-1
If(Tables(Cstr(args(0))).Cols(i).Name=Cstr(args(1))) Then
Forms(Cstr(args(2))).Controls(Tables(Cstr(args(0))).Cols(i).Name).Checked=False
Else
Forms(Cstr(args(2))).Controls(Tables(Cstr(args(0))).Cols(i).Name).Value=Nothing
End If
Next