以文本方式查看主题 - 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 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属性是“字段”,但是显示出来却是为空值
|