运行时创建控件的事件。 [英] Events for runtime created controls.
问题描述
我有一段代码:
对于iLOOP = 0到iNoDays - 1
对于jLOOP = 0到iMaxPeriods - 1
iX = 10 +(iLOOP *(dCellWidth + 10))
iY = 10 +(jLOOP *(dCellHeight + 10))+
Me。 Size.Height / 4
如果jLOOP = 0且iLOOP = 0那么
lblDISPLAY(((iLOOP)* iMaxPeriods)+ jLOOP)=新
TextBox
lblDISPLAY(((iLOOP)* iMaxPeriods)+ jLOOP).Text =
"
lblDISPLAY(((iLOOP)* iMaxPeriods)+
jLOOP).Location = New Point(iX,iY)
lblDISPLAY( ((iLOOP)* iMaxPeriods)+
jLOOP).AutoSize = False
lblDISPLAY(((iLOOP)* iMaxPeriods)+ jLOOP).Height
= dCellHeight
lblDISPLAY(((iLOOP)* iMaxPeriods)+ jLOOP).Width
= dCellWidth
lblDISPLAY((iLOOP) * iMaxPeriods)+
jLOOP).Visible = False
lblDISPLAY(((iLOOP)* iMaxPeriods)+ jLOOP).Name =
" ; txtPERIOD" &安培; ((iLOOP)* iMaxPeriods)+ jLOOP.ToString
Me.Controls.Add(lblDISPLAY(((iLOOP)* iMaxPeriods)
+ jLOOP))
Else
如果jLOOP = 0且iLOOP> 0然后
lblDISPLAY(((iLOOP)* iMaxPeriods)+ jLOOP)=
新TextBox
lblDISPLAY(((iLOOP)* iMaxPeriods) +
jLOOP).Text = WeekdayName(iLOOP ,, FirstDayOfWeek.Sunday)
lblDISPLAY(((iLOOP)* iMaxPeriods)+
jLOOP ).Location = New Point(iX,iY)
lblDISPLAY(((iLOOP)* iMaxPeriods)+
jLOOP).Height = dCellHeight
lblDISPLAY(((iLOOP)* iMaxPeriods)+
jLOOP).Width = dCellWidth
lblDISPLAY(((iLOOP)* iMaxPeriods)+
jLOOP).AutoSize = False
lblDISPLAY(((iLOOP)* iMaxPeriods)+
jLOOP).BorderStyle = BorderStyle.None
lblDISPLAY (((iLOOP)* iMaxPeriods)+
jLOOP)。TextAlign = HorizontalAlignment.Center
lblDISPLAY(((iLOOP)* iMaxPeriods)+
jLOOP)。Name =" txtPERIOD" &安培; ((iLOOP)* iMaxPeriods)+ jLOOP.ToString
Me.Controls.Add(lblDISPLAY(((iLOOP)*
iMaxPeriods)+ jLOOP))
否则
如果iLOOP = 0且jLOOP> 0然后
lblDISPLAY(((iLOOP)* iMaxPeriods)+
jLOOP)=新TextBox
lblDISPLAY(((iLOOP)* iMaxPeriods) +
jLOOP).Text =" Period" &安培; jLOOP.ToString
lblDISPLAY(((iLOOP)* iMaxPeriods)+
jLOOP).Location = New Point(iX,iY)
lblDISPLAY (((iLOOP)* iMaxPeriods)+
jLOOP).Height = dCellHeight
lblDISPLAY(((iLOOP)* iMaxPeriods)+
jLOOP ).Width = dCellWidth
lblDISPLAY(((iLOOP)* iMaxPeriods)+
jLOOP).AutoSize = False
lblDISPLAY((iLOOP )* iMaxPeriods)+
jLOOP).BorderStyle = BorderStyle.None
lblDISPLAY(((iLOOP)* iMaxPeriods)+
jLOOP)。 TextAlign = HorizontalAlignment.Right
lblDISPLAY(((iLOOP)* iMaxPeriods)+
jLOOP).Name =" txtPERIOD" &安培; ((iLOOP)* iMaxPeriods)+ jLOOP.ToString
Me.Controls.Add(lblDISPLAY(((iLOOP)*
iMaxPeriods)+ jLOOP))
Else
lblDISPLAY(((iLOOP)* iMaxPeriods)+
jLOOP)=新TextBox
lblDISPLAY((iLOOP) * iMaxPeriods)+
jLOOP).Text =" Label No" &安培; ((iLOOP)* iMaxPeriods)+ jLOOP.ToString
lblDISPLAY(((iLOOP)* iMaxPeriods)+
jLOOP).Location = New Point(iX,iY)
lblDISPLAY(((iLOOP)* iMaxPeriods)+
jLOOP).Height = dCellHeight
lblDISPLAY(((iLOOP)* iMaxPeriods)+
jLOOP).Width = dCellWidth
lblDISPLAY(((iLOOP)* iMaxPeriods)+
jLOOP).AutoSize = False
lblDISPLAY(((iLOOP)* iMaxPeriods)+
jLOOP).Name =" txtPERIOD" &安培; ((iLOOP)* iMaxPeriods)+ jLOOP.ToString
Me.Controls.Add(lblDISPLAY(((iLOOP)*
iMaxPeriods)+ jLOOP))
结束如果
结束如果
结束如果
下一个jLOOP
下一个iLOOP
在运行时在表单上创建一个文本框网格依赖于
天数和周期数 - 它的时间表类型为
的事情。
如何捕获这些控件的事件?
如
private sub lblDISPLAY((( iLOOP)* iMaxPeriods)_Mouseclick
或
private sub lblDISPLAY(((iLOOP)* iMaxPeriods)_gotfocus
>
??
Tym,
您可以使用AddHandler& RemoveHandler,类似于:
Dim index As Integer =((iLOOP)* iMaxPeriods)+ jLOOP
AddHandler lblDISPLAY(index).Click,AddressOf labelDisplay_Click
AddHandler lblDISPLAY(in dex).GotFocus,AddressOf
labelDisplay_GotFocus
Private Sub labelDisplay_Click(ByVal sender As Object,ByVal e As
System.EventArgs )
End Sub
Private Sub labelDisplay_GotFocus(ByVal sender As Object,ByVal e As
System.EventArgs )
结束子
希望这有帮助
Jay
Tym <无***** @ ictis.net>在消息中写道
news:5l ******************************** @ 4ax.com ...我有一段代码:
对于iLOOP = 0到iNoDays - 1
对于jLOOP = 0到iMaxPeriods - 1
iX = 10 +(iLOOP *(dCellWidth + 10))
iY = 10 +(jLOOP *(dCellHeight + 10))+
Me.Size.Height / 4
如果jLOOP = 0和iLOOP = 0然后
lblDISPLAY(((iLOOP)* iMaxPeriods)+ jLOOP)=新
TextBox
lblDISPLAY(((iLOOP)* iMaxPeriods)+ jLOOP).Text =
lblDISPLAY(((iLOOP)* iMaxPeriods)+
jLOOP).Location = New Point(iX,iY)
lblDISPLAY(((iLOOP)* iMaxPeriods)+
jLOOP).AutoSize = False
lblDISPLAY(((iLOOP)* iMaxPeriods)+ jLOOP).Height
= dCellHeight
lblDISPLAY(((iLOOP)* iMaxPeriods)+ jLOOP).Width
= dCellWidth
lblDISPLAY(((iLOOP)* iMaxPeriods)+
jLOOP).Visible = False
lblDISPLAY(((iLOOP)* iMaxPeriods)+ jLOOP).Name =
txtPERIOD &安培; ((iLOOP)* iMaxPeriods)+ jLOOP.ToString
Me.Controls.Add(lblDISPLAY(((iLOOP)* iMaxPeriods)
+ jLOOP))
否则
如果jLOOP = 0和iLOOP> 0然后
lblDISPLAY(((iLOOP)* iMaxPeriods)+ jLOOP)=
新TextBox
lblDISPLAY(((iLOOP)* iMaxPeriods)+
jLOOP).Text = WeekdayName( iLOOP ,, FirstDayOfWeek.Sunday)
lblDISPLAY(((iLOOP)* iMaxPeriods)+
jLOOP).Location =新点(iX,iY)
lblDISPLAY(((iLOOP)* iMaxPeriods) +
jLOOP).Height = dCellHeight
lblDISPLAY(((iLOOP)* iMaxPeriods)+
jLOOP).Width = dCellWidth
lblDISPLAY(((iLOOP)* iMaxPeriods)+
jLOOP).AutoSize = False
lblDISPLAY(((iLOOP)* iMaxPeriods)+
jLOOP).BorderStyle = BorderStyle.None
lblDISPLAY(((iLOOP)* iMaxPeriods)+
jLOOP)。TextAlign = HorizontalAlignment.Center
lblDISPLAY(((iLOOP)* iMaxPeriods)+
jLOOP).Name =" txtPERIOD" &安培; ((iLOOP)* iMaxPeriods)+ jLOOP.ToString
Me.Controls.Add(lblDISPLAY(((iLOOP)*
iMaxPeriods)+ jLOOP))
否则
如果iLOOP = 0和jLOOP> 0然后
lblDISPLAY(((iLOOP)* iMaxPeriods)+
jLOOP)=新TextBox
lblDISPLAY(((iLOOP)* iMaxPeriods)+
jLOOP).Text ="期间 &安培; jLOOP.ToString
lblDISPLAY(((iLOOP)* iMaxPeriods)+
jLOOP).Location =新点(iX,iY)
lblDISPLAY(((iLOOP)* iMaxPeriods)+
jLOOP).Height = dCellHeight
lblDISPLAY(((iLOOP)* iMaxPeriods)+
jLOOP).Width = dCellWidth
lblDISPLAY(((iLOOP)* iMaxPeriods)+
jLOOP ).AutoSize = False
lblDISPLAY(((iLOOP)* iMaxPeriods)+
jLOOP).BorderStyle = BorderStyle.None
lblDISPLAY(((iLOOP)* iMaxPeriods)+
jLOOP ).TextAlign = HorizontalAlignment.Right
lblDISPLAY(((iLOOP)* iMaxPeriods)+
jLOOP).Name =" txtPERIOD" &安培; ((iLOOP)* iMaxPeriods)+ jLOOP.ToString
Me.Controls.Add(lblDISPLAY(((iLOOP)*
iMaxPeriods)+ jLOOP))
其他
lblDISPLAY(( (iLOOP)* iMaxPeriods)+
jLOOP)=新TextBox
lblDISPLAY(((iLOOP)* iMaxPeriods)+
jLOOP).Text =" Label No" &安培; ((iLOOP)* iMaxPeriods)+ jLOOP.ToString
lblDISPLAY(((iLOOP)* iMaxPeriods)+
jLOOP).Location = New Point(iX,iY)
lblDISPLAY((iLOOP )* iMaxPeriods)+
jLOOP).Height = dCellHeight
lblDISPLAY(((iLOOP)* iMaxPeriods)+
jLOOP).Width = dCellWidth
lblDISPLAY(((iLOOP)* iMaxPeriods)+
jLOOP).AutoSize = False
lblDISPLAY(((iLOOP)* iMaxPeriods)+
jLOOP).Name =" txtPERIOD" &安培; ((iLOOP)* iMaxPeriods)+ jLOOP.ToString
Me.Controls.Add(lblDISPLAY(((iLOOP)*
iMaxPeriods)+ jLOOP))
结束如果
结束如果
结束如果
下一个jLOOP
下一个iLOOP
在运行时在表单上创建一个文本框网格,取决于
天数和周期数 - 它是一个时间表的东西。
如何捕获这些控件的事件?
例如
private sub lblDISPLAY((iLOOP) * iMaxPeriods)_Mouseclick
private sub lblDISPLAY(((iLOOP)* iMaxPeriods)_gotfocus
??
Tym,
您从未看过我的标准样品,它看起来几乎是您的问题?。
您可以在此消息中找到它
http://groups.google.com/groups?selm...TNGP10.phx.gbl
我希望它有所帮助?
Cor
Jay - 优秀代码 - 开箱即用!!
只需要另外一个请求 - 有没有办法检测哪一个已经点击了?b / b
advTHANKSance >
On Tue,2004年11月2日08:55:09 -0600,Jay B. Harlow [MVP - Outlook]"
< Ja *** *********@msn.com>写道:
Private Sub labelDisplay_Click(ByVal sender As Object,ByVal e As System.EventArgs)
msgbox("你点击了单元格编号& labelDISPLAY.Name)
''你明白了...... :-)
End Sub
I have a piece of code thus:
For iLOOP = 0 To iNoDays - 1
For jLOOP = 0 To iMaxPeriods - 1
iX = 10 + (iLOOP * (dCellWidth + 10))
iY = 10 + (jLOOP * (dCellHeight + 10)) +
Me.Size.Height / 4
If jLOOP = 0 And iLOOP = 0 Then
lblDISPLAY(((iLOOP) * iMaxPeriods) + jLOOP) = New
TextBox
lblDISPLAY(((iLOOP) * iMaxPeriods) + jLOOP).Text =
" "
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP).Location = New Point(iX, iY)
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP).AutoSize = False
lblDISPLAY(((iLOOP) * iMaxPeriods) + jLOOP).Height
= dCellHeight
lblDISPLAY(((iLOOP) * iMaxPeriods) + jLOOP).Width
= dCellWidth
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP).Visible = False
lblDISPLAY(((iLOOP) * iMaxPeriods) + jLOOP).Name =
"txtPERIOD" & ((iLOOP) * iMaxPeriods) + jLOOP.ToString
Me.Controls.Add(lblDISPLAY(((iLOOP) * iMaxPeriods)
+ jLOOP))
Else
If jLOOP = 0 And iLOOP > 0 Then
lblDISPLAY(((iLOOP) * iMaxPeriods) + jLOOP) =
New TextBox
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP).Text = WeekdayName(iLOOP, , FirstDayOfWeek.Sunday)
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP).Location = New Point(iX, iY)
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP).Height = dCellHeight
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP).Width = dCellWidth
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP).AutoSize = False
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP).BorderStyle = BorderStyle.None
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP).TextAlign = HorizontalAlignment.Center
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP).Name = "txtPERIOD" & ((iLOOP) * iMaxPeriods) + jLOOP.ToString
Me.Controls.Add(lblDISPLAY(((iLOOP) *
iMaxPeriods) + jLOOP))
Else
If iLOOP = 0 And jLOOP > 0 Then
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP) = New TextBox
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP).Text = "Period " & jLOOP.ToString
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP).Location = New Point(iX, iY)
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP).Height = dCellHeight
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP).Width = dCellWidth
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP).AutoSize = False
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP).BorderStyle = BorderStyle.None
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP).TextAlign = HorizontalAlignment.Right
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP).Name = "txtPERIOD" & ((iLOOP) * iMaxPeriods) + jLOOP.ToString
Me.Controls.Add(lblDISPLAY(((iLOOP) *
iMaxPeriods) + jLOOP))
Else
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP) = New TextBox
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP).Text = "Label No " & ((iLOOP) * iMaxPeriods) + jLOOP.ToString
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP).Location = New Point(iX, iY)
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP).Height = dCellHeight
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP).Width = dCellWidth
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP).AutoSize = False
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP).Name = "txtPERIOD" & ((iLOOP) * iMaxPeriods) + jLOOP.ToString
Me.Controls.Add(lblDISPLAY(((iLOOP) *
iMaxPeriods) + jLOOP))
End If
End If
End If
Next jLOOP
Next iLOOP
which creates a grid of text boxes on a form at runtime dependent on
the number of days and the number of periods - its a timetable sort of
thing.
How do I capture events for these controls?
such as
private sub lblDISPLAY(((iLOOP) * iMaxPeriods)_Mouseclick
or
private sub lblDISPLAY(((iLOOP) * iMaxPeriods)_gotfocus
??
Tym,
You can use AddHandler & RemoveHandler, something like:
Dim index As Integer = ((iLOOP) * iMaxPeriods) + jLOOP
AddHandler lblDISPLAY(index).Click, AddressOf labelDisplay_Click
AddHandler lblDISPLAY(index).GotFocus, AddressOf
labelDisplay_GotFocus
Private Sub labelDisplay_Click(ByVal sender As Object, ByVal e As
System.EventArgs)
End Sub
Private Sub labelDisplay_GotFocus(ByVal sender As Object, ByVal e As
System.EventArgs)
End Sub
Hope this helps
Jay
"Tym" <no*****@ictis.net> wrote in message
news:5l********************************@4ax.com...I have a piece of code thus:
For iLOOP = 0 To iNoDays - 1
For jLOOP = 0 To iMaxPeriods - 1
iX = 10 + (iLOOP * (dCellWidth + 10))
iY = 10 + (jLOOP * (dCellHeight + 10)) +
Me.Size.Height / 4
If jLOOP = 0 And iLOOP = 0 Then
lblDISPLAY(((iLOOP) * iMaxPeriods) + jLOOP) = New
TextBox
lblDISPLAY(((iLOOP) * iMaxPeriods) + jLOOP).Text =
" "
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP).Location = New Point(iX, iY)
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP).AutoSize = False
lblDISPLAY(((iLOOP) * iMaxPeriods) + jLOOP).Height
= dCellHeight
lblDISPLAY(((iLOOP) * iMaxPeriods) + jLOOP).Width
= dCellWidth
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP).Visible = False
lblDISPLAY(((iLOOP) * iMaxPeriods) + jLOOP).Name =
"txtPERIOD" & ((iLOOP) * iMaxPeriods) + jLOOP.ToString
Me.Controls.Add(lblDISPLAY(((iLOOP) * iMaxPeriods)
+ jLOOP))
Else
If jLOOP = 0 And iLOOP > 0 Then
lblDISPLAY(((iLOOP) * iMaxPeriods) + jLOOP) =
New TextBox
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP).Text = WeekdayName(iLOOP, , FirstDayOfWeek.Sunday)
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP).Location = New Point(iX, iY)
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP).Height = dCellHeight
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP).Width = dCellWidth
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP).AutoSize = False
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP).BorderStyle = BorderStyle.None
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP).TextAlign = HorizontalAlignment.Center
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP).Name = "txtPERIOD" & ((iLOOP) * iMaxPeriods) + jLOOP.ToString
Me.Controls.Add(lblDISPLAY(((iLOOP) *
iMaxPeriods) + jLOOP))
Else
If iLOOP = 0 And jLOOP > 0 Then
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP) = New TextBox
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP).Text = "Period " & jLOOP.ToString
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP).Location = New Point(iX, iY)
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP).Height = dCellHeight
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP).Width = dCellWidth
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP).AutoSize = False
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP).BorderStyle = BorderStyle.None
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP).TextAlign = HorizontalAlignment.Right
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP).Name = "txtPERIOD" & ((iLOOP) * iMaxPeriods) + jLOOP.ToString
Me.Controls.Add(lblDISPLAY(((iLOOP) *
iMaxPeriods) + jLOOP))
Else
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP) = New TextBox
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP).Text = "Label No " & ((iLOOP) * iMaxPeriods) + jLOOP.ToString
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP).Location = New Point(iX, iY)
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP).Height = dCellHeight
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP).Width = dCellWidth
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP).AutoSize = False
lblDISPLAY(((iLOOP) * iMaxPeriods) +
jLOOP).Name = "txtPERIOD" & ((iLOOP) * iMaxPeriods) + jLOOP.ToString
Me.Controls.Add(lblDISPLAY(((iLOOP) *
iMaxPeriods) + jLOOP))
End If
End If
End If
Next jLOOP
Next iLOOP
which creates a grid of text boxes on a form at runtime dependent on
the number of days and the number of periods - its a timetable sort of
thing.
How do I capture events for these controls?
such as
private sub lblDISPLAY(((iLOOP) * iMaxPeriods)_Mouseclick
or
private sub lblDISPLAY(((iLOOP) * iMaxPeriods)_gotfocus
??
Tym,
You never saw my standard sample for this, it looks almost as your problem?.
You can find it in this message
http://groups.google.com/groups?selm...TNGP10.phx.gbl
I hope it helps?
Cor
Jay - excellent code - worked right out of the box!!
Just one further request - is there a way to detect which one has been
clicked??
advTHANKSance
On Tue, 2 Nov 2004 08:55:09 -0600, "Jay B. Harlow [MVP - Outlook]"
<Ja************@msn.com> wrote:
Private Sub labelDisplay_Click(ByVal sender As Object, ByVal e As System.EventArgs)
msgbox ("You have clicked on cell number " & labelDISPLAY.Name)
'' you get the idea... :-)
End Sub
这篇关于运行时创建控件的事件。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!