运行时创建控件的事件。 [英] Events for runtime created controls.

查看:53
本文介绍了运行时创建控件的事件。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一段代码:


对于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 = Horizo​​ntalAlignment.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 = Horizo​​ntalAlignment.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 = Horizo​​ntalAlignment.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 = Horizo​​ntalAlignment.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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆