以编程方式添加的控件的问题无法获取属性,甚至无法引用控件![英] Problems with programmatically added control - can't get properties, can't even reference control!

问题描述

我正在使用下面的代码添加一堆控件.

问题 1:当程序流传递到"UpperChanged"时当我点击它时,
控件名称未定义.当我进入:

If udUpperLim1.Value 1 Then

我收到 udUpperLim1 是"未定义"的错误消息.所以我无法得到
控件中的值.

问题2:当我使用sender.tostring时,它返回
的类名控件,而不是其指定的名称.我明白了
"System.Windows.Forms.NumericUpDown"而不是 udUpperLim1 我没有
知道谁被改变了,以及前面的问题,即使我
有,我不能引用它!

决定移除控制阵列的人没有做任何事情
喜欢!!!!!!!!!!

这完全是一本书的内容,对
没有任何用处我.

请帮忙!

迈克·莫罗
MSDN:MMSA00E62537

iTop = 84

将 udUpperLim1 调暗为新的 NumericUpDown
udUpperLim1.SetBounds(228, iTop, 45, 20)
iTop += 20
Me.Controls.Add(udUpperLim1)
AddHandler udUpperLim1.ValueChanged, AddressOf UpperChanged
udUpperLim1.Value = My.Settings.Alarm1

将 udUpperLim3 调暗为新的 NumericUpDown
udUpperLim3.SetBounds(228, iTop, 45, 20)
iTop += 20
Me.Controls.Add(udUpperLim3)
AddHandler udUpperLim3.ValueChanged, AddressOf UpperChanged
udUpperLim3.Value = My.Settings.Alarm3

将 udUpperLim5 调暗为新的 NumericUpDown
udUpperLim5.SetBounds(228, iTop, 45, 20)
iTop += 20
Me.Controls.Add(udUpperLim5)
AddHandler udUpperLim5.ValueChanged, AddressOf UpperChanged
udUpperLim5.Value = My.Settings.Alarm5

推荐答案

Ju********@home.net 写道:
我正在使用下面的代码添加一堆控件.

问题 1:当程序流传递到"UpperChanged"时当我点击它时,
控件名称未定义.当我进入时:

If udUpperLim1.Value 1 Then

我收到 udUpperLim1 是"未定义"的错误消息.所以我无法得到
控件中的值.

问题2:当我使用sender.tostring时,它返回
的类名控件,而不是其指定的名称.我明白了
"System.Windows.Forms.NumericUpDown"而不是 udUpperLim1 我没有
知道谁被改变了,以及前面的问题,即使我
做了,我不能引用它!
您需要发现控件的 Name 属性.:)

这可能看起来很愚蠢,但事实并非如此.您的 udUpperLim1 变量是临时变量
参考,很快就超出了范围.您需要命名实际对象.添加
像这样控制:

将 udUpperLim1 调暗为新的 NumericUpDown
udUpperLim1.Name = "udUpperLim1"
'' 剩下的...

如果以后需要掌握,可以这样做
将 udUL 调暗为 NumericUpDown
udUL = TryCast(Me.Controls.Item("udUpperLim1"), NumericUpDown)
if udUL IsNot Nothing Then
''明白了...

在事件处理程序中,您可以执行相同的操作:
将 udUL 调暗为 NumericUpDown
udUL = TryCast(发件人, NumericUpDown)
if udUL IsNot Nothing Then
'' 发件人是 NumericUpDown
如果 udUL.Name = "udUpperLim1";那么
'' 就是那个...



问题1:当程序流程传递到"UpperChanged"时当我点击它时,
控件名称未定义.当我进入时:

If udUpperLim1.Value 1 Then

我收到 udUpperLim1 是"未定义"的错误消息.所以我无法得到
控件中的值.
这是因为在您的代码中您没有为控件提供 ID.你的命名
持有控件但不设置 ID 属性的变量.

将 udUpperLim1 调暗为新的 NumericUpDown
''******************************
''设置控件的ID属性
udUpperLim1.ID = "udUpperLim1"
''******************************
udUpperLim1.SetBounds(228, iTop, 45, 20)
iTop += 20
Me.Controls.Add(udUpperLim1)
AddHandler udUpperLim1.ValueChanged, AddressOf UpperChanged
udUpperLim1.Value = My.Settings.Alarm1
问题2:当我使用sender.tostring时,它返回
的类名控件,而不是其指定的名称.我明白了
"System.Windows.Forms.NumericUpDown"而不是 udUpperLim1 我没有
知道谁被改变了,以及前面的问题,即使我
有,不能参考!
这是因为您正在调用 .ToString() ,它返回对象类型
在一个字符串中...尝试使用 sender.ID

- 亚当



"SneeKeeFahk"<NO****@DONTSPAM.com 在留言中写道
新闻:uz**************@TK2MSFTNGP03.phx.gbl...
>问题1:当程序流传递到"UpperChanged"时当我单击它时,
控件名称未定义.当我输入:

If udUpperLim1.Value 1 Then

我收到一个错误,即 udUpperLim1 是"未定义"所以我无法获得控件中的
值.

这是因为在您的代码中您没有为控件提供 ID.你的
命名持有控件但不设置 ID 的变量


将 udUpperLim1 调暗为新的 NumericUpDown
''******************************
''设置控件的ID属性
udUpperLim1.ID = "udUpperLim1"
''******************************
udUpperLim1.SetBounds(228, iTop, 45, 20)
iTop += 20
Me.Controls.Add(udUpperLim1)
AddHandler udUpperLim1.ValueChanged, AddressOf UpperChanged
udUpperLim1.Value = My.Settings.Alarm1
>问题 2:当我使用 sender.tostring 时,它返回
控件的类名,而不是分配的名称.我得到
"System.Windows.Forms.NumericUpDown"而不是 udUpperLim1 并且我不知道谁被更改了以及前面的问题,即使我
做了,我也无法引用它!

这是因为您正在调用 .ToString() ,它返回对象类型
在一个字符串中...尝试使用 sender.ID

- 亚当
如果您正在做 ASP,请使用 ID 属性.如果您使用的是 winforms,请使用
名称属性.

LS


本文地址:https://www.itbaoku.cn/post/1050763.html