C# 'FindControl' 在当前上下文中不存在
C# 'FindControl' does not exist in the current context
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;
}
}
我收到错误消息“名称 'FindControl' 在当前上下文中不存在。我正在尝试根据字符串提供的名称填充文本框数组。
例如; TextBoxes[2] = Vars[x] + "TextBox";
我是否缺少某些命名空间?当我查找 FindControl 时,它只是告诉我 NameSpace 是 "System.Web.UI" 并且我已将 "System.web" 添加到我的引用中。
正如@Equalsk 所说,我需要使用 Controls.Find(...);我只是用错了东西。我想我应该 post 将此作为答案以确保它脱颖而出,因为虽然这可能是一件非常简单的事情,但我(和其他人一样)完全没有意识到这个功能。
`
静态 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" 只是让我可以将它用于我的任何表单,因为它位于全局 class.
中
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;
}
}
我收到错误消息“名称 'FindControl' 在当前上下文中不存在。我正在尝试根据字符串提供的名称填充文本框数组。
例如; TextBoxes[2] = Vars[x] + "TextBox";
我是否缺少某些命名空间?当我查找 FindControl 时,它只是告诉我 NameSpace 是 "System.Web.UI" 并且我已将 "System.web" 添加到我的引用中。
正如@Equalsk 所说,我需要使用 Controls.Find(...);我只是用错了东西。我想我应该 post 将此作为答案以确保它脱颖而出,因为虽然这可能是一件非常简单的事情,但我(和其他人一样)完全没有意识到这个功能。
` 静态 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" 只是让我可以将它用于我的任何表单,因为它位于全局 class.
中