簡體   English   中英

在DataRepeater_DrawItem事件期間檢索位於Panel上的.Text文本框

[英]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.

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