3

ImageButton を動的に宣言しようとしています。

次のように宣言し、ID とイメージを割り当てます。

ImageButton btn = new ImageButton();
btn.ImageUrl = "img/Delete.png";
btn.ID = oa1[i] + "_" + i;
btn.OnClick = "someMethod";

しかし、ボタンに OnClick ハンドラーを割り当てようとすると、次の例外がスローされます。

System.Web.UI.WebControls.ImageButton.OnClick is inaccessible due to protection level
4

4 に答える 4

5

アクセス可能であっても、そのようなメソッドに値を割り当てることはできませんでした。イベントにサブスクライブする必要があります。

btn.Click += ClickHandlingMethod;
于 2012-06-16T08:22:13.250 に答える
4

例:

private void CreateAButton()
{
    var button = new ImageButton();
    button.ImageUrl = "yourimage.png";
    button.ID = "Button1";
    button.Click += ButtonClick;

    Page.Form.Controls.Add(button);
}

private void ButtonClick(object sender, ImageClickEventArgs e)
{
    // Do stuff here
    // ...
}
于 2012-06-16T08:30:44.660 に答える
4

この回答を見てください。動的コントロールとイベントに関連しています

Jon がコメントしたように、イベントに文字列を追加することはできません。この場合、イベントのハンドラーを追加する必要があります。

    protected void Page_Init(object sender, EventArgs e)
    {
        var i = new ImageButton();
        i.Click += new ImageClickEventHandler(i_Click);
        this.myPanel.Controls.Add(i);
    }

    void i_Click(object sender, ImageClickEventArgs e)
    {
        // do something
    }

代替手段

    protected void Page_Init(object sender, EventArgs e)
    {
        var i = new ImageButton();
        i.Click += (source, args) =>
        {
            // do something
        };
        this.myPanel.Controls.Add(i);
    }
于 2012-06-16T08:32:40.523 に答える