读书人

动态生成控件的嵌套有关问题

发布时间: 2012-02-06 15:52:45 作者: rapoo

动态生成控件的嵌套问题?
我用如下程序根据数据库中的数据条数动态生成了几个panel,这几个panel的宽度是根据表中分组人数的多少制定的宽度,我想在生成这些panel后将这个表中的r_name(人名)字段再以动态生成button的方式显示在这些panel中, r_name(人名)字段生成的button自动分组放在相应班组的panel中,要如何做才行?

谢谢

Dim SqlConnection1 As New OleDbConnection( "provider=microsoft.jet.oledb.4.0; data source= " + Application.StartupPath + "\db.mdb ")
Try
Dim SqlCommandbz As New OleDbCommand
Dim SqlDataAdapterbz As New OleDbDataAdapter
Dim Datasetbz As New DataSet
SqlCommandbz.Connection = SqlConnection1
SqlCommandbz.CommandText = "SELECT ban_zhu as 班组, count(ID) as 人数 FROM jichu_data GROUP BY ban_zhu "
SqlDataAdapterbz.SelectCommand = SqlCommandbz
SqlDataAdapterbz.Fill(Datasetbz, "dy_jichu_data ")
Dim tt As Integer = 10
Dim ll As Integer = 10
For ii As Integer = 0 To Datasetbz.Tables(0).Rows.Count - 1
Dim PAN As New Panel
PAN.Parent = Panel2
PAN.BackColor = Color.Blue
PAN.Name = Datasetbz.Tables( "jichu_data ").Rows(ii)( "班组 ")
PAN.Left = ll
PAN.Top = tt
PAN.Width = Datasetbz.Tables( "jichu_data ").Rows(ii)( "人数 ") * 30
PAN.Height = 80
ll += Datasetbz.Tables( "jichu_data ").Rows(ii)( "人数 ") * 30 + 10


PAN.Show()

Next

Catch ex As Exception

End Try

[解决办法]
你应该理清一下思路,将功能细分出来。
建议你将生成Panel的功能写成一个函数,同样在Panel里生成Button的功能也写成一个函数。
给Panel生成函数传递班组数据,然后在Panel生成函数内不调用Button生成函数,给Button生成函数传递参数的时候,就根据当前所在Panel名称过滤以下即可。
public void BuildButton(DataSet dsButton)
{
//生成Button
}
Public void BuildPanel(DataSet dsGroup)
{
BuildButton( "根据Panel班组名称过滤数据 ");
}

[解决办法]
用控件的Controls.Add()方法添加
如 Form1.Controls.Add(PAN)
PAN.Controls.Add(New Button())
[解决办法]
帮顶了!

读书人网 >VB Dotnet

热点推荐