我需要將我的表單控件(文本框,單選按鈕等)的readOnly屬性設置爲readOnly = true或false基於全局變量。獲取頁面上的所有控件
我希望我可以依次通過這樣每個類型的控件:
For Each Ctrl In Me.Controls
Ctrl.ReadOnly = myGlobalTrueFalse
Next
但是,這並不工作,因爲每個按Ctrl沒有隻讀屬性。
任何想法?
謝謝!
我需要將我的表單控件(文本框,單選按鈕等)的readOnly屬性設置爲readOnly = true或false基於全局變量。獲取頁面上的所有控件
我希望我可以依次通過這樣每個類型的控件:
For Each Ctrl In Me.Controls
Ctrl.ReadOnly = myGlobalTrueFalse
Next
但是,這並不工作,因爲每個按Ctrl沒有隻讀屬性。
任何想法?
謝謝!
我用我猜你只需要測試,如果控制有試圖將值分配給它之前的財產。
For Each Ctrl In Me.Controls
If Ctrl.ReadOnly Is Not Nothing Then
Ctrl.ReadOnly = myGlobalTrueFalse
End If
Next
這是更ressources conssuming不是簡單地把所有你想在喜歡的面板的容器禁用控制,禁止容器本身。 (這將禁用其中的所有控件)
我所有的控件都在一個.net ContentPlaceHolder中的標準HTML表格內。其中一個可以作爲一個容器,我可以設置只讀? - 感謝 – SkyeBoniwell 2013-04-22 17:51:55
我真的沒有**參考當談到網絡。我會看看它給我幾分鐘。 – phadaphunk 2013-04-22 17:52:39
它不能簡單地被禁用。我能找到的最好的方法是將其可見性設置爲false,但也會隱藏它的內容。你有可能改變禿鷹嗎? – phadaphunk 2013-04-22 18:00:04
Try
For Each Ctrl In Me.Controls
Ctrl.ReadOnly = myGlobalTrueFalse
Next
Catch ex As Exception
End Try
這時候,發生這種情況
-1。不要使用try catch模式來處理這些事情。如果你發現某些東西你想對它做一些有用的事情,那麼不是簡單地埋沒一個異常。 – phadaphunk 2013-04-22 17:46:13
-1,你至少可以做的是在循環內嘗試,這當然只是少了一點錯誤。 – Behrooz 2013-04-22 17:46:30
@PhaDaPhunk我使用嘗試,因爲它不會停在一個錯誤。適用於我。 – 2013-04-22 17:59:50
請先查看PhaDaPhunks的答案。
自從我編寫了任何VB代碼以來,這已經是年份了,但是這應該可以。
你可以添加更多的循環。
For Each Ctrl In Me.Controls
If Ctrl.ReadOnly Is Not Nothing Then
Ctrl.ReadOnly = myGlobalTrueFalse
End If
For Each Ctrl2 In Ctrl.Controls
If Ctrl2.ReadOnly Is Not Nothing Then
Ctrl2.ReadOnly = myGlobalTrueFalse
End If
Next
Next
當我看着你的代碼時,我記得我爲什麼**高度偏愛C#語法。 – phadaphunk 2013-04-22 18:07:08
@PhaDaPhunk同意,當然,這是絕對簡單的比較,當我12歲的時候我在VB6中做的。 – Behrooz 2013-04-22 18:10:43
這點是重點。這麼多垃圾郵件在屏幕上執行這樣一項小任務... 0_o – phadaphunk 2013-04-22 18:16:47
要訪問的所有控件,包括那些在容器中,使用此
Dim ctrl As Control = Me.GetNextControl(Me, True)
Do Until ctrl Is Nothing
'perform action here
ctrl = Me.GetNextControl(ctrl, True)
Loop
一個最好的解決辦法是把你想在'Panel'對象禁用控件,然後只需禁用'面板對象。 – 2013-04-22 17:47:49