[英]Retrieving .Text of Textbox located on Panel during DataRepeater_DrawItem event
我正在使用DataRepeater的DrawItem事件來根據.Text內容更改文本框的.BackColor和.ForeColor。 除非文本框位於面板上,否則此工作正常。 如果文本框在面板上,那么我將返回此異常:“對象引用未設置為對象的實例。” 它表示“e.DataRepeaterItem.Controls(txt_AWQRecordStatus.Name).Text”沒有值。 單步執行代碼即可確認。
但是......如果我只是將該文本框從面板上滑下來,那么它的工作正常。 我的Google-Fu讓我失望了。 我錯過了什么?
附加信息:Visual Studio 2010 Professional,VB.Net目標.NET 4.0
'Set Record Status Color
Select Case e.DataRepeaterItem.Controls(txt_AWQRecordStatus.Name).Text
Case "Working"
e.DataRepeaterItem.Controls(txt_AWQRecordStatus.Name).BackColor = Color.Green
e.DataRepeaterItem.Controls(txt_AWQRecordStatus.Name).ForeColor = Color.White
Case "Sleep"
e.DataRepeaterItem.Controls(txt_AWQRecordStatus.Name).BackColor = Color.Red
e.DataRepeaterItem.Controls(txt_AWQRecordStatus.Name).ForeColor = Color.White
Case Else
e.DataRepeaterItem.Controls(txt_AWQRecordStatus.Name).BackColor = Color.White
e.DataRepeaterItem.Controls(txt_AWQRecordStatus.Name).ForeColor = Color.Black
End Select
回答我自己的問題,以防將來困惑別人:
當控件位於面板上時,它從代碼角度嵌套在控件內部。 因此,您必須引用面板控件,然后引用您實際嘗試更改的控件。 所以我不得不追逐我的陳述,如下所示:
e.DataRepeaterItem.Controls(panel_RecordDetails.Name).Controls(txt_AWQRecordStatus.Name).ForeColor = Color.Black
凡panel_RecordDetails是面板,並且txt_AWQRecordStatus是面板上的文本框中。 可能有一種更簡單的方法可以做到這一點,但我要取勝並繼續前進。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.