以编程方式创建控件及其保护级别

时间:2014-06-18 10:38:27

标签: c# asp.net

我在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(?)上。

4 个答案:

答案 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(?)。

相关问题