vb.net动态添加控件问题

在form1里这样定义

Dim pa As New Panel
pa.BackColor = Color.Black
pa.Location = New Point(339, 300)
Me.Controls.Add(pa)
能成功显示定义的panel,但是把这些语句定义在类里就不行了,显示没有controls,不知道怎么做
class p
代码
end class
然后在form1里 dim p1 as new p
希望能显示出panel 怎么做

你还要把过程与控件事件绑定
AddHandler 控件.事件名,addressof 事件过程
RemoveHandler 这个是取消绑定

没发现自动生存的事件过程后面还有一个Hander button1.Click之类的,这就是所谓事件句柄。反而跟过程名没关系,改成阿猫阿狗也可以。

例外也可以像 Private WithEvents obj as ControlClass 这么声明控件变量,估计像vb6那样会在下拉列表中列出事件系列。

哎呀,说了半天跑题了。 ff不存在嘛多半不是它的作用域范围内,应该把ff变量定义在类中,而不是类中的某个过程中。

最好把代码添多一点,把ff部分也添出来看看。
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-08-13
你还要把过程与控件事件绑定
AddHandler 控件.事件名,addressof 事件过程
RemoveHandler 这个是取消绑定

没发现自动生存的事件过程后面还有一个Hander button1.Click之类的,这就是所谓事件句柄。反而跟过程名没关系,改成阿猫阿狗也可以。

例外也可以像 Private WithEvents obj as ControlClass 这么声明控件变量,估计像vb6那样会在下拉列表中列出事件系列。

哎呀,说了半天跑题了。 ff不存在嘛多半不是它的作用域范围内,应该把ff变量定义在类中,而不是类中的某个过程中。

最好把代码添多一点,把ff部分也添出来看看。
希望能解决您的问题。
第2个回答  推荐于2017-11-26
类代码如下:
Public Class P
    Inherits System.Windows.Forms.Form
    Sub New(ByVal frm As Form)
        Dim pa As New Panel
        pa.BackColor = Color.Black
        pa.Location = New Point(339, 300)
        frm.Controls.Add(pa)
    End Sub
End Class 
'调用如下(调用的窗体的宽必须大于339,高必须大于300,不然看不到显示效果)
  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim p1 As New P(Me)
    End Sub

本回答被提问者采纳
相似回答