C#' FindControl'在当前上下文中不存在

时间:2017-10-10 10:01:21

标签: asp.net webforms findcontrol

using System;  
using System.Collections.Generic;  
using System.ComponentModel;  
using System.Data;  
using System.Drawing;  
using System.Linq;  
using System.Text;  
using System.Threading.Tasks;  
using System.Windows.Forms;  
using System.Configuration;  
using System.Data.SqlClient;  
using System.Web.UI;  

public TextBoxes(string query)  
    {  
        String[] Vars = query.Split('@');  
        for (int x = 1;x < Vars.Length;x++)  
        {  
            TextBox tb = (TextBox)FindControl(Vars[x] + "TextBox") as TextBox;  
        }  
    }  

我收到错误&#34;名称&#39; FindControl&#39;在当前上下文中不存在。我正在尝试根据字符串提供的名称填充一组文本框。

e.g; TextBoxes [2] = Vars [x] +&#34; TextBox&#34 ;;

我缺少一些NameSpace吗?当我查找FindControl时,它只是告诉我NameSpace是&#34; System.Web.UI&#34;我添加了#34; System.web&#34;我的参考资料。

1 个答案:

答案 0 :(得分:0)

正如@Equalsk所说我需要使用Controls.Find(...);我只是在使用错误的东西。想我应该发布这个作为答案,以确保它脱颖而出,因为它可能是一个非常简单的事情,我(像其他人可能)完全没有意识到这个功能。

`         static TextBox []值;

    public static TextBox[] TextBoxes(string query, Form Current)
    {
        String[] Vars = query.Split('@');

        String[] NewVars = new String[Vars.Length - 1];
        Values = new TextBox[Vars.Length - 1];

        for (int x = 0; x < Vars.Length - 1; x++)
        {
            NewVars[x] = Vars[x + 1].Remove((Vars[x + 1].Length - 1));
            Values[x] = Current.Controls.Find(NewVars[x] + "TextBox", true).FirstOrDefault() as TextBox;
        }

        return Values;
    }

`

这是更新后的代码。 “Form Current”只是允许我将它用于我的任何形式,因为我将它放在全球类中。