我在aspx.cs页面后面的代码中创建了一个按钮。但是,我需要在创建后在其中更改任何文本时在此文本框中进行检测。
TextBox addn = new TextBox
{
ID = "Tb_Address" + i,
CssClass = "TextBoxProfile",
OnTextChanged = "textChangedEventHandler",
Text = "testc"
};
Tb_Container.Controls.Add(addn);
然而OnTextChanged给了我这个错误:
'System.Web.UI.WebControls.TextBox.OnTextChanged(System.EventArgs)' is inaccessible due to its protection level
我已经阅读过这些问题;但我没有设计师页面来改变保护级别,我也认为这不会起作用,因为这些控件是以编程方式创建的。
编辑:
我曾尝试过:
addn.OnTextChanged += textChangedEventHandler;
然而,这仍然给我上述错误。
addn.TextChanged += textChangedEventHandler;
上述工作,但它不是所需的输出,因为我希望这是自动的而不是在PageLoad(?)上。
答案 0 :(得分:0)
您正在订阅文本更改事件,方法是在ascx文件中执行此操作。由于您以编程方式创建控件,因此您应该订阅这样的事件:
TextBox addn = new TextBox {
ID = "Tb_Address" + i,
CssClass = "TextBoxProfile",
Text = "testc"
};
addn.OnTextChanged += textChangedEventHandler;
Tb_Container.Controls.Add(addn);
答案 1 :(得分:0)
您可以直接附加如下所示的事件并使用事件处理程序...并查看此答案Dynamically create an ImageButton: -
TextBox addn = new TextBox ;
addn.TextChanged += new EventHandler(b_textChanged);
及其处理程序: -
void b_textChanged(object sender, EventArgs e)
{
////Your code
}
答案 2 :(得分:0)
addn.TextChanged + = textChangedEventHandler;
上面的工作,但它不是所需的输出,因为我希望这是自动的,而不是在PageLoad(?)。
您是否应该在输入值时检测到文本更改? 因为如果你的意思是那么JavaScript就是你需要的。
答案 3 :(得分:0)
OnTextChanged
是一种方法,而不是一个事件,你不能订阅它,它是引发事件的方法。它受到保护,因此如果您从Textbox类派生,则可以使用自己的行为覆盖它。请参阅OnTextChanged method。
TextChanged
是您需要订阅的实际事件本身,您已正确完成此操作,但我认为您希望它的行为方式不同?你是如何期待它的表现的? Netnetter可能在使用javascript的正确方面。请参阅TextChanged event。
addn.TextChanged + = textChangedEventHandler; 上面的工作,但它不是所需的输出,因为我希望这是自动的,而不是在PageLoad(?)。