簡體   English   中英

如何通過“字符串名稱”獲取控件屬性?

[英]How To Get Control Property by “String Name”?

我已經通過在下一個循環中編碼創建了按鈕和文本框,結果

'T(x).Name = "text_1"
'T(x).Name = "text_2"
'T(x).Name = "text_3"
'....

'B(x).Name = "button_1"
'B(x).Name = "button_2"
'B(x).Name = "button_3"
'...

我想在單擊按鈕時獲得文本框屬性,單擊按鈕時可以獲得按鈕屬性,例如button_1.Name.ToString但我無法獲得 text_1,2,3 .... 屬性。

我通過拆分函數 button_1.Name.ToString 做一些技巧並獲取最后一個數字並將其添加到文本框名稱中,例如"text_" & button_1.Name.ToString但我無法將此字符串轉換為對象。

更新

這是我用來在循環中加載控件的代碼:

C_A_TEXT(x) = New TextBox() 
C_A_TEXT(x).Dock = System.Windows.Forms.DockStyle.Fill 
C_A_TEXT(x).Location = New System.Drawing.Point(270, 5) 
C_A_TEXT(x).Margin = New System.Windows.Forms.Padding(0) 
C_A_TEXT(x).Size = New System.Drawing.Size(70, 27) 
C_A_TEXT(x).TabIndex = 5 
C_A_TEXT(x).Name = "NEW_RECHARGE_COUNT_TEXT_" & x

更新 2

這里還有一些代碼:

AddHandler C_A_BUTTONS(x).Click, AddressOf C_A_BUTTON 

Private Sub C_A_BUTTON(ByVal sender As System.Object, ByVal e As System.EventArgs) 
    Dim thisButton As Button = sender Dim A = CType(Me.Controls("NEW_RECHARGE_COUNT_TEXT_1"), TextBox) 
    MsgBox(A.Text.ToString)  'Error!
End Sub

您可以通過Form.Controls屬性按名稱訪問控件,例如:

Dim text1 As TextBox = CType(Me.Controls("text_1"), TextBox)

作為一個快速有用的提示,您似乎不必為了訪問表單上的控件而在 CType 語句中指定控件的類型。 我在嘗試使用同一行代碼訪問多種類型的表單控件(例如按鈕和文本框)時遇到了這個問題。

CType(Controls("NAME_OF_CONTROL"), Control)

請注意,您無需指定確切的控件類型,例如“TextBox”或“Button”,而只需聲明“Control”。 這允許您普遍更改任何類型的控件,而無需指定其類型。

我在其他地方找不到這個,所以我想我會分享它!

下面是代碼。

Dim oObj As Object = Me.Controls.Find("control name", True).FirstOrDefault()
Obj.Property = Value

我希望它有幫助。

Dim sometext As TextBox = CType(Me.Controls("sometext "), TextBox)

線程的標題和您對手頭問題的描述似乎有些不同。

要回答您的標題(按名稱查找控件),請使用以下命令:

Dim myControlToFind = LayoutRoot.FindName("NAMEOFCONTROL")

可以在此處找到有關此方法的更多信息。

要回答你的問題的描述為(訪問被點擊后,代碼生成的控制),做到以下幾點:

在您創建控件的循環中添加以下處理程序

Addhandler YOURCONTROL.Clicked, AddressOf Textbox_Clicked

...然后這將處理點擊事件

Private Sub Textbox_Clicked(sender as object, e as RoutedEventArgs)

Dim tbClicked = Ctype(sender, TextBox)
'You can now access any of the properties of the textbox, for example

Dim txt as String = tbClicked.Text
Dim name as String = tbClicked.Name
Dim height as Double = tbClicked.Height

End Sub

以上都不適合我。 這樣做:

Dim selVal As String = CType(Form.FindControl(myListName), DropDownList).SelectedValue

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM