任务是计算网络表单中的点击次数。
这是代码。
public partial class _default : System.Web.UI.Page
{
int count = 1;
private void Page_Load(object sender, System.EventArgs e)
{
Button btn = new Button();
btn.Text = "Click Me";
btn.Click += btn_Click;
Label lbl = new Label();
form1.Controls.Add(btn);
form1.Controls.Add(lbl);
}
protected void btn_Click(object sender, EventArgs e)
{
count++;
//Label1.Text = count.ToString();
}
}
问题是 btn_Click()中无法识别 lbl ...我无法理解......有人可以建议吗?
答案 0 :(得分:4)
你需要在page_load方法之外声明lbl,而不是像你这样在按钮点击时使用它。
Label lbl ;
int count = 1;
private void Page_Load(object sender, System.EventArgs e)
{
Button btn = new Button();
btn.Text = "Click Me";
btn.Click += btn_Click;
lbl = new Label();
form1.Controls.Add(btn);
form1.Controls.Add(lbl);
}
protected void btn_Click(object sender, EventArgs e)
{
count++;
if(lbl !=null)
lbl.Text = count.ToString();
}
因为如果在page_load中创建标签,变量的范围仅限于该方法。所以你要么像我一样在方法之外声明标签,要么你可以给标签id,而不是用FindControl
方法搜索它。
答案 1 :(得分:1)
ASPX:
<form id="form1" runat="server">
<div>
<asp:Button ID="btn" runat="server" OnClick="btn_Click" Text="Button" />
<asp:Label id="lbl" runat="server" />
</div>
</form>
Code-Behind(C#):
int count = 1;
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
lbl.Text = count.ToString();
}
}
protected void btn_Click(object sender, EventArgs e)
{
if (int.TryParse(lbl.Text, out count))
{
lbl.Text = (++count).ToString();
}
}