2

id="form1"私の要件は、ユーザーが Button をクリックしたときに、フォーム内に直接存在する TextBox と CheckBox の総数をカウントすること'btnGetCount'です。これは私が試したコードですが、フォームに3つのTextBoxと2つのCheckBoxがありますが、何もカウントせず、カウンターはゼロのままです。ただし、foreach ループを削除TextBox control = new TextBox();して現在のコードの代わりに渡すと、最初の TextBox がカウントされ、countTB は値を 1 として返します。

protected void btnGetCount_Click(object sender, EventArgs e)
    {
        Control control = new Control();

        int countCB = 0;
        int countTB = 0;
        foreach (Control c in this.Controls)
        {
            if (control.GetType() == typeof(CheckBox))
            {
                countCB++;
            }
            else if (control is TextBox)
            {
                countTB++;
            }
        }

        Response.Write("No of TextBoxes: " + countTB);
        Response.Write("<br>");
        Response.Write("No of CheckBoxes: " + countCB);
    }
4

4 に答える 4

4

使用できない Control コントロールのタイプをカウントしているため、コードを次のように変更できます。

protected void btnGetCount_Click(object sender, EventArgs e)
    {

        int countCB = 0;
        int countTB = 0;
        foreach (Control c in this.Controls)
        {
            if (c.GetType() == typeof(CheckBox))
            {
                countCB++;
            }
            else if (c.GetType()== typeof(TextBox))
            {
                countTB++;
            }
        }

        Response.Write("No of TextBoxes: " + countTB);
        Response.Write("<br>");
        Response.Write("No of CheckBoxes: " + countCB);
    } 
于 2013-07-17T23:45:57.507 に答える
0

Alyafey、pcnThird、および Valamas によって提案されたコードに若干の変更を加えただけで、動作するこのコードを書きました。

protected void btnGetCount_Click(object sender, EventArgs e)
    {

        int countCB = 0;
        int countTB = 0;
        foreach (Control c in form1.Controls) //here is the minor change
        {
            if (c.GetType() == typeof(CheckBox))
            {
                countCB++;
            }
            else if (c.GetType()== typeof(TextBox))
            {
                countTB++;
            }
        }

        Response.Write("No of TextBoxes: " + countTB);
        Response.Write("<br>");
        Response.Write("No of CheckBoxes: " + countCB);
    } 
于 2013-07-18T00:11:29.350 に答える