Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# TextChanged不';t火_C#_Asp.net_Textbox_Textchanged - Fatal编程技术网

C# TextChanged不';t火

C# TextChanged不';t火,c#,asp.net,textbox,textchanged,C#,Asp.net,Textbox,Textchanged,我试图在按下“添加更多”按钮时生成文本框,因此这是onclick的代码 protected void Add_TextBoxes(object sender, EventArgs e) { int index = int.Parse(ViewState["pickindex"].ToString()); TextBox MyTextBox = new TextBox(); MyTextBox.ID = "t

我试图在按下“添加更多”按钮时生成文本框,因此这是onclick的代码

protected void Add_TextBoxes(object sender, EventArgs e)
        {
            int index =  int.Parse(ViewState["pickindex"].ToString());
            TextBox MyTextBox = new TextBox();
            MyTextBox.ID = "tbautogenerated"+index.ToString();
            MyTextBox.Text = "tbautogenerated" + index.ToString();
            MyTextBox.Width= 250;
            MyTextBox.MaxLength = 128;
            MyTextBox.Attributes.Add("runat", "server");
            MyTextBox.CausesValidation = false;
            MyTextBox.AutoPostBack = true;
            MyTextBox.TextChanged += new EventHandler(MyTextBox_TextChanged);
            picktexts.Controls.Add(MyTextBox);

        }

void MyTextBox_TextChanged(object sender, EventArgs e)
    {
        TextBox MyTextBox = sender as TextBox;
    }
但是当我在文本框中更改时,文本更改不起作用!!!怎么了

HTML代码

<asp:UpdatePanel ID="UpdatePanel2" runat="server">
                <ContentTemplate>
                    <div id="picktexts" runat="server">
                    <asp:TextBox ID="txtAdress" runat="server" MaxLength="128" Width="250" />
                    <asp:RequiredFieldValidator ControlToValidate="txtAdress" Display="Dynamic" ID="rfvAddress" Text="* Required" runat="server" />
                    <asp:Button ID="bt_addtxtbox" runat="server" Text="Add more" OnClick="Add_TextBoxes"  CausesValidation="false" />
                    </div>
                    </ContentTemplate>
                    </asp:UpdatePanel>

我认为事件处理程序在帖子之间迷失了方向。按照ASP.NET的工作方式,每次将页面发回自身时,所有对象都将再次实例化,并且它们的状态将从ViewState恢复。通常,在aspx中声明的控件会通过其标记中的声明将自身与事件重新关联,但这里的情况并非如此

因此,请在页面加载期间再次尝试关联事件处理程序。像这样:

void Page_Load (object sender, EventArgs e)
{
    foreach (Control c in picktexts.Controls)
    {
        ((TextBox)c).TextChanged += new EventHandler(MyTextBox_TextChanged);
    }
}

然后查看是否有效。

添加断点以确保其执行该部分。新文本框出现,但不订阅文本更改事件?什么意思,不起作用?您是否希望在文本框中键入时触发事件?因为如果是这样的话,默认情况下,它应该只在两篇文章之间触发。请查看事件文档。它只在柱子之间开火。当文本框失去焦点时,可以通过将设置为true来强制发布。否则,在键入字符后强制发布。愉快的编码。动态添加控件时,Viewstate会出错。我使用[ViewState[“AddedControl”]=“true”;]()。第二我不知道即使设置了AutoPostBack,是否也需要设置runat服务器属性,但您尚未设置runat属性。我认为HTML文本更改是不同的。但是kartal至少应该在焦点改变时看到回发事件。我在焦点改变时看到回发事件,但我无法从PickText获取文本框,它是空的!!!正如Renan所说,ViewState将在每个帖子背面重新创建。你能参考一下我在你的问题的评论中分享的链接吗(评论排在第10位)?你的PickText div很可能没有ViewState,或者它没有启用。在这一点上我有些生疏。请查看Yogee的评论。我不理解ViewState部分,你能给我举个例子吗?