none
有沒有辦法以迴圈方式將control的值清空? RRS feed

  • 問題

  • 請問各位學長:

    設若,我在form上有20多個control,包括有label,textbox,combobox等等,有沒有辦法下迴圈指令讀取每一個control並且將它們的值全部設為nothing。

    不知道各位學長遇到這樣的情形,做法是如何?請指教。

    2007年6月15日 上午 05:21

解答

  • 在 C# 是這樣寫: 

    Code Snippet

    Control ctl = null;

     

    foreach (Control c in this.Controls)

    {

         if (c.GetType() == typeof(TextBox))

         {

              (c as TextBox).Text = string.Empty;

         }

    }

     

     

    2007年6月15日 上午 06:31
    版主

所有回覆

  • 做列舉控制項的方法就可以了。

    2007年6月15日 上午 05:29
    版主
  • 回小朱學長:

    我這樣寫...

    Dim abc As Control
            For Each abc In Me.Controls
                abc.Text = Nothing
            Next

    這樣會清空所有的值,包括不應該清掉的也清掉了,我不知道該如何去抓我要的control,請指教。

    2007年6月15日 上午 06:14
  • 在 C# 是這樣寫: 

    Code Snippet

    Control ctl = null;

     

    foreach (Control c in this.Controls)

    {

         if (c.GetType() == typeof(TextBox))

         {

              (c as TextBox).Text = string.Empty;

         }

    }

     

     

    2007年6月15日 上午 06:31
    版主
  • 回小朱學長:

    謝謝您的指導,我已經會清空TextBox及ComboBox。

    但是,在label上就有問題,例如:我放兩個Label Control  --> 姓名:阿羅

    姓名: <-- 是Label1

    阿羅     <-- 是Lab_Name

    然後我下語法....

    Dim abc As Control
      Dim cc As Label
      For Each abc In Me.Controls
          If TypeOf abc Is Label Then
                    cc = abc
                    cc.Text = Nothing
          End If

    Next

    原本是想清掉 Lab_Name,結果連 Label1 標題 姓名:都清掉了,怎辦?這部份你都是如何做的?

    2007年6月15日 上午 06:45
  • 那就加判斷 ID 就好了啊。

    但我在命名 ID 時都會保持規則性,這樣在程式處理上也會比較方便。

     

    If TypeOf abc Is Label And abc.ID = "xxx" Then...

    2007年6月15日 上午 06:54
    版主
  • :::

            Dim abc As Control
            Dim cc As Label
            For Each abc In Me.Controls
                If (TypeOf abc Is Label) AndAlso (CType(abc, Label).Text <> "Label1") Then
                    cc = abc
                    cc.Text = Nothing
                End If
            Next

    2007年6月15日 上午 06:57
  • 兩個以上的Label....寫法也是抓ID嗎?還是.....?

    2007年6月15日 上午 07:35
  • ID 是不能重覆的吧。
    2007年6月15日 上午 09:00
    版主
  • 回小朱學長:

    我將程式碼寫到MDIChilder的Form上面,結果都沒法清除欄位資料,如果Form不是在MDIChilder上就可以正榷的清除資料,怎會這樣?幫幫忙,甘溫哪。

    2007年6月17日 上午 02:37