gpt4 book ai didi

c# - 按钮不想调用方法 (ASP.NET - C#)

转载 作者:太空宇宙 更新时间:2023-11-03 18:45:56 25 4
gpt4 key购买 nike

首先,我要感谢您花时间阅读我的问题,也许还能帮助我。 :)

现在回到我的问题...我正在使用 C# 代码创建新按钮并将它们附加到名为 Panel1 的面板中:

Button novgumb = new Button();
novgumb.Click += new EventHandler(ButtonOdstrani);
novgumb.CommandArgument = "2";
novgumb.Visible = true;
novgumb.Text = "Test";
Panel1.Controls.Add(novgumb);

以这种方式创建的按钮,应该调用我的方法 ButtonOdstrani:

    public void ButtonOdstrani(object sender, EventArgs e)
{
string asd = ((Button)sender).CommandArgument;
//...
}

现在,当我将 Button 代码放入 PageLoad 时,它工作正常,但是当我将它放入我在网站上编写 XML 的方法时,以这种方式创建的按钮将不会调用 ButtonOdstrani 函数:

protected void IzpisXML()
{
BranjeXML();
string[] element = ime.Split('$');
//Button gumbs = new Button();
//gumbs.Click += new EventHandler(ButtonOdstrani);
//gumbs.Visible = true;
//gumbs.Text = ("Odstrani ");
//Panel1.Controls.Add(gumbs);
for (; z < stevec/2; z++)
{
string imeGostilne = element[i];
string naslov = element[i + 1];
string telefon = element[i + 2];
string spletnaStran = element[i + 3];
string odpiralniOD = element[i + 4];
string odpiralniDO = element[i + 5];
string boni = element[i + 6];

Label labela = new Label();

labela.Text = "<b>Ime gostilne:</b> " + imeGostilne + "<br /><b>Naslov:</b> " + naslov + "<br><b>Telefon:</b> " + telefon + "<br><b>Spletna stran:</b> " + spletnaStran + "<br><b>Odpiralni cas:</b> " + odpiralniOD + " - " + odpiralniDO + "<br /><b>Študnetski boni:</b> " + boni + "<br />";
labela.Enabled = true;
labela.EnableTheming = true;
labela.EnableViewState = true;
labela.Visible = true;
labela.ID = ("Label" + (z + 1));
Panel1.Controls.Add(labela);

Button novgumb = new Button();
novgumb.Click += new EventHandler(ButtonOdstrani);
novgumb.CommandArgument = "2";
novgumb.Visible = true;
novgumb.Text = "Test";
Panel1.Controls.Add(novgumb);

Label hr = new Label();
hr.Text = "<hr />";
hr.Visible = true;
hr.Enabled = true;
hr.EnableTheming = true;
hr.EnableViewState = true;
Panel1.Controls.Add(hr);
i += 7;

}
}

现在请注意 for 语句外的注释按钮 - 它无法正常工作。我的意思是“它不起作用”,它没有调用 ButtonOdstrani 函数,它只是刷新了网站(回发)。

我真的很感谢任何建议解决方案。


好的,现在我已经创建了以下内容:

private Button[] ButtonZaOdstranjevanje;

protected override void OnInit(EventArgs e)
{
ButtonZaOdstranjevanje = new Button[stevec/2];
base.OnInit(e);
BranjeXML();

for (int j=0; j < stevec/2; j++)
{
Button novgumb = new Button();
novgumb.Click += new EventHandler(ButtonOdstrani);
novgumb.Visible = true;
novgumb.Text = "Odstrani gostilno";
ButtonZaOdstranjevanje[j] = novgumb;
}

}

但问题是我得到一个错误:“索引超出了数组的范围”这在:

ButtonZaOdstranjevanje[j] = novgumb;

不符合逻辑,因为stevec值为4,所以stevec/2 = 2,j参数设置为0。有谁知道如何解决此错误?

最佳答案

创建动态控件时,您需要在每次回发时重新创建。

参见 here

关于c# - 按钮不想调用方法 (ASP.NET - C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4500114/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com