none
VB 2005 TEXTBOX屬性大量更改 RRS feed

  • 問題

  • 如今天我有24個TEXTBOX

    執行程式後觸發一事件讓全部的textbox

    Enable屬性為False

     

    但一開始沒有做TEXTBOX陣列,去網上有搜到

       For tb = 1 To 24

      arrTextBox(tb) = Me.Controls.Item("TextBox" & tb.ToString())

          Next

     

    放在FORMLOAD裡

    但是在程式要執行更改ENABLE屬性的時候會出現"並未將物件參考設定為物件的執行個體"

     

    這是執行更改ENABLE的程式碼

    For tb = 1 to 24

      arrTextBox(tb).Enable=False

    next

     

    我是不是有哪裡寫錯了呢?

     

    2010年3月28日 下午 12:59

解答

  •     Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
            For i As Integer = 1 To 24
                Me.Controls("TextBox" & i).Enabled = False
            Next
    
        End Sub

    • 已標示為解答 THKAW 2010年3月28日 下午 01:46
    2010年3月28日 下午 01:08
  • :::檢查看看在Form裡是否有TextBox1~TextBox24名稱的TextBox物件

    這些TextBox物件是否在Form裡???還是在Panel或TabControl裡???

    • 已標示為解答 THKAW 2010年3月28日 下午 01:46
    2010年3月28日 下午 01:40

所有回覆

  •     Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
            For i As Integer = 1 To 24
                Me.Controls("TextBox" & i).Enabled = False
            Next
    
        End Sub

    • 已標示為解答 THKAW 2010年3月28日 下午 01:46
    2010年3月28日 下午 01:08
  • 之前有試過這個辦法

    但是會出現"並未將物件參考設定為物件的執行個體"

     

    但我另外開一個project單純拉24個textbox

    加上一個觸發按鈕

    這樣子的寫法是可行的

     

    但到我的程式就有問題...

    2010年3月28日 下午 01:23
  • :::檢查看看在Form裡是否有TextBox1~TextBox24名稱的TextBox物件

    這些TextBox物件是否在Form裡???還是在Panel或TabControl裡???

    • 已標示為解答 THKAW 2010年3月28日 下午 01:46
    2010年3月28日 下午 01:40
  • 對,剛剛在嘗試的同時發現在我的程式裡拉一個新的texbox卻可以用

    放回去groupbox裡就失效了!

     

    如果是放在groupbox裡該如何更改?

     

    謝謝提示

    2010年3月28日 下午 01:44
  • 對,剛剛在嘗試的同時發現在我的程式裡拉一個新的texbox卻可以用

    放回去groupbox裡就失效了!

     

    如果是放在groupbox裡該如何更改?

     

    謝謝提示

    2010年3月28日 下午 01:44
  • :::

    GroupBox1.Controls("TextBox" & i).Enabled = False

    2010年3月28日 下午 01:45
  • :::

    GroupBox1.Controls("TextBox" & i).Enabled = False


            For i As Integer = 1 To 1
                Me.GroupBox2.Controls("TextBox" & i).Enabled = False
            Next
    回覆完馬上去嘗試.

    也達成相同的效果

    還是謝謝你^^
    2010年3月28日 下午 01:46
  • 在想請問一下,如果今天更改textbox1,textbox2的內容

     

    將數值自動對應存入t(1),t(2)

    要怎麼做呢?

    2010年3月28日 下午 01:50
  •             Me.Controls("TextBox" & i).Text = t(i)


    2010年3月28日 下午 02:04
  • 可是我要做到更改textbox也順便一起自動更改陣列內的數值

    如用  Me.Controls("TextBox" & i).Text = t(i)

    就需要有外來觸發去執行這條程式碼

     


     

    我需要即時改變

    除了timer定時載入更新textbox的數值到陣列中

     

    有辦法能做到像TextChanged事件的效果嗎?

    有數值鍵入才做更新陣列的動作

     

    謝謝

    2010年3月28日 下午 02:09
  •     Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
            For i As Integer = 2 To 3
                AddHandler Me.Controls("TextBox" & i).TextChanged, AddressOf TextBox1_TextChanged
            Next
    
        End Sub
    
        Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
    
            Dim tb As TextBox = CType(sender, TextBox)
            Dim index As Integer = CInt(Mid(tb.Name, 8))
            t(index) = tb.Text
    
        End Sub

    2010年3月28日 下午 02:30
  • Hi,

    您可以參閱AddHandler把所有TextBox繫上TextChanged事件

    AddHandler 陳述式

    http://msdn.microsoft.com/zh-tw/library/7taxzxka(VS.80).aspx


    謙卑學習,持之以恆,才能不斷的Level Up http://www.dotblogs.com.tw/larrynung/
    2010年3月28日 下午 02:32
  •     Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
            For i As Integer = 2 To 3
                AddHandler Me.Controls("TextBox" & i).TextChanged, AddressOf TextBox1_TextChanged
            Next
    
        End Sub
    
        Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
    
            Dim tb As TextBox = CType(sender, TextBox)
            Dim index As Integer = CInt(Mid(tb.Name, 8))
            t(index) = tb.Text
    
        End Sub
    

    這樣也只有Handle到TextBox1而已

    其他Textbox沒有一起Handle作用到耶

    2010年3月29日 下午 12:22
  • Hi,

    您試過了嗎?

    程式看起來是對的,我跑起來也是對的...


    謙卑學習,持之以恆,才能不斷的Level Up http://www.dotblogs.com.tw/larrynung/
    2010年3月29日 下午 12:27
  • :::檢查看看TextBox2及TextBox3是不是沒有在Form表單裡,而是在GroupBox裡 ???
    2010年3月29日 下午 01:55
  • Hi,

    您試過了嗎?

    程式看起來是對的,我跑起來也是對的...


    謙卑學習,持之以恆,才能不斷的Level Up http://www.dotblogs.com.tw/larrynung/

    真不好意思,昨天因為心情煩躁程式碼貼上去只有一個TEXTBOXHANDLE到所以就很急著尋求幫助

    沒有先自己嘗試更改...

     

    今天上來重新把HANDLE陳述式看一次才解決

     

    的確是因為我的物件在GroupBox理所以才沒HANDLE到

     

    把ME改成GroupBox就沒有問題了!,謝謝蹂躪大提供的MSDN Libary

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
            For i As Integer = 2 To 3
                AddHandler GroupBox2.Controls("TextBox" & i).TextChanged, AddressOf TextBox1_TextChanged
            Next
    
        End Sub

    2010年3月30日 上午 10:03
  • 現在又遇到一個問題...如果將textbox改成radiobox

    .text改成.check

    就不會在Groupbox成員裡了...

    這樣就會有錯誤

     

    for P2i = 1 to 24 
    Me.GroupBox4.Controls("RadioButton" & P2I).check = True
    next

    2010年3月30日 下午 12:42
  •         For P2i As Integer = 1 To 2
                CType(Me.GroupBox1.Controls("RadioButton" & P2i), RadioButton).Checked = True
            Next

    CType 函式

    RadioButton不能複選,CheckBox才是...
    2010年3月30日 下午 01:54
  •         For P2i As Integer = 1 To 2
                CType(Me.GroupBox1.Controls("RadioButton" & P2i), RadioButton).Checked = True
            Next
    

    CType 函式

    RadioButton不能複選,CheckBox才是...

    CType原來可以做這麼多事情,受教了!

     

    當初選用RadioButton的時候是考慮形狀比較符合需求,但想說能不能靠指令讓他同時多選

    所以RadioButton無法做到複選功能嗎?

     

    謝謝這幾位大大問了這麼多都一一耐心解答!

    2010年3月30日 下午 02:38