我正在加载页面时创建了5个单选按钮:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
for (int i = 0; i < 5; i++)
{
RadioButton r = new RadioButton();
r.Text = i.ToString();
r.ID = i.ToString(); ;
Panel1.Controls.Add(r);
}
}
}
我想用另一种方法访问它们对应一个点击按钮,但我不能。 :
protected void Button1_Click(object sender, EventArgs e)
{
RadioButton r = (RadioButton)FindControl("2");
r.Checked = true;
}
当我执行findcontrol方法时,我得到以下异常:nullreferenceexception未被用户代码处理
答案 0 :(得分:2)
您已在Panel1
中添加了控件,因此您应该在那里找到它。
替换行:
RadioButton r = (RadioButton)FindControl("2");
使用:
RadioButton r = Panel1.FindControl("2") as RadioButton;
if(r != null) //check for null reference, before accessing
r.Checked = true;
答案 1 :(得分:1)
FindControl
不进行深度搜索。您向Panel1
添加了单选按钮,但调用FindControl
的{{1}}。
Page
另一件事。删除RadioButton r = (RadioButton)Panel1.FindControl("2");
条件。当if (!Page.IsPostBack)
触发时,页面处于PostBack状态,如果您希望找到它们,则必须创建动态控件。
答案 2 :(得分:0)
您需要检查是否创建了控件,并且需要检查空值。你这样做是错误的。解决此错误首先检查对象是否已初始化,如果它已初始化,则表示引用变量未接收到值。请查看以下链接以供参考: http://blog.mastersoftwaresolutions.com/why-null-reference-error-occurred/