2

在我的程序(VB.NET)中,我试图创建一个看起来像这样的循环:

Dim NumberOfRows As Integer = IPOSDBDataSet.Meals.Rows.Count
Dim IntegerCount As Integer = 1
Do Until IntegerCount = NumberOfRows
    Button("ButtonMeal" & IntegerCount).Text = "Hello"
    'AND MORE STUFF
Loop

我知道 Button 行不起作用,但这是描述我希望它如何工作的最佳方式。我在我的程序中使用数据库。我希望循环通过并更改(例如)按钮的文本属性。

在第一个循环中,它将“ButtonMeal1”文本更改为“Hello”。然后,如果表格上有更多行,它将循环并将“ButtonMeal2”更改为“Hello”等等。显然,我不想将所有内容都更改为 hello,但我试图使我的代码保持简单以避免混淆。

如果这没有意义,请告诉我。我一直在寻找几个小时,找不到答案!任何帮助是极大的赞赏!

4

3 回答 3

2

您可以使用控件集合的查找方法,此功能将搜索控件集合的子项,以防您的按钮托管在面板或其他容器控件上。

DirectCast(Controls.Find("ButtonMeal" & IntegerCount, True)(0), Button).Text = "Hello"
于 2013-06-15T01:13:46.820 回答
1

试试这样..

Dim btn as Button
Do Until IntegerCount = NumberOfRows
    btn=DirectCast(Controls("ButtonMeal" & IntegerCount.ToString),Button)
    btn.Text = "Hello"
    'AND MORE STUFF
Loop
于 2013-06-15T01:09:57.950 回答
0

您可以在 controlCollection 中引用控件的名称,例如:

Me.Controls("ButtonMeal" & IntergerCount.ToString)

如果它们属于另一个容器:

Panel1.Controls("ButtonMeal" & IntergerCount.ToString) 

如果您的控件名为 ButtonMeal1 等...

如果您使用强类型数据集,您可以在设计时绑定到控件——这可能是一个更好的设计。

于 2013-06-15T00:59:59.943 回答