以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于外部添加的Combobox无法调用的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=31656)

--  作者:cslike
--  发布时间:2013/4/18 17:17:00
--  关于外部添加的Combobox无法调用的问题
Dim cb1 As New Windows.Forms.Combobox
With cb1
    .width = 90
    .left = Forms("数据区").Width / 4
    .Top = 15
    .Name = "字段"
End With
Forms("数据区").Controls("底层面板").Panel1.BaseControl.Controls.Add(cb1)
我添加了一个Combobox的控件,然后循环了下所有的控件,发现没有叫做“字段的控件”,也无法调用这个控件,但是这个控件确实添加成功了的,请问各位高手,这是什么情况

--  作者:Bin
--  发布时间:2013/4/18 17:18:00
--  
例子发出来看看.
--  作者:cslike
--  发布时间:2013/4/18 17:32:00
--  
这个基本就是全部的代码了,我声明了这个控件,
Dim 字段 As Winform.Combobox = Forms("数据区").Controls("字段")
提示无名为字段这个控件,除了这个错误,其他都正常。
用 Dim 字段 As Windows.Forms.Combobox = Forms("数据区").Controls("字段")
也是同样的问题

--  作者:Bin
--  发布时间:2013/4/18 17:40:00
--  
Dim cb1 As WinForm.ComboBox
cb1 = e.Form.CreateControl("字段", ControlTypeEnum.Combobox)
With cb1
    .width = 90
    .left = Forms("数据区").Width / 4
    .Top = 15
End With
Forms("数据区").Controls("底层面板").AddControl(cb1)

--  作者:cslike
--  发布时间:2013/4/18 17:48:00
--  
因为我想要自定义一个SelectedIndexChanged事件所以才调用外部的控件,而这个事件也已经能实现了,我定义的其他类型的控件,像button,label都可以,唯独这个不行,遍历控件名字的时候,这个控件的name为空,会不会因为.name = "字段"这种写法的问题。
--  作者:Bin
--  发布时间:2013/4/18 17:50:00
--  
有可能.
--  作者:狐狸爸爸
--  发布时间:2013/4/18 17:57:00
--  

你可以按照标准的方法来添加:

Dim cb1 As WinForm.ComboBox
cb1 = e.Form.CreateControl("字段", ControlTypeEnum.Combobox)
With cb1
    .width = 90
    .left = Forms("数据区").Width / 4
    .Top = 15
End With
Forms("数据区").Controls("底层面板").AddControl(cb1)

 

如果你要底层的控件来设置事件,可以:

Dim cb2 As New Windows.Forms.Combobox = e.Form.Controls("ComboBox1").BaseControl

 


--  作者:cslike
--  发布时间:2013/4/19 9:06:00
--  
我调用了底层控件,可为什么name属性会为空呢,如果用标准方法的话,怎么调用combobox的事件呢
--  作者:有点甜
--  发布时间:2013/4/19 9:27:00
--  

你获得了底层的控件:

 

Dim cb2 As New Windows.Forms.Combobox = e.Form.Controls("ComboBox1").BaseControl

 

就可以给这个底层控件添加事件处理程序,例如:

 

AddHandler cb2.SelectedIndexChanged, AddressOf ComboBox1SelectedIndexChanged


--  作者:cslike
--  发布时间:2013/4/19 9:30:00
--  
这个我知道,只是现在问题就是这个底层控件的name,combobox1为空的,我无法获取此控件的属性
Dim cb1 As New Windows.Forms.Combobox
With cb1
    .width = 90
    .left = Forms("数据区").Width / 4
    .Top = 15
    .Name = "字段"
End With
添加成功后,明明name属性是“字段”,但是显示出来却是为空值