首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >代码生成按钮

代码生成按钮
EN

Stack Overflow用户
提问于 2012-06-15 18:21:10
回答 3查看 390关注 0票数 0

关于页面加载时代码生成的按钮与设计视图中手动添加的按钮的大问题。

您不能手动添加140个按钮,所以我更喜欢代码。所有的按钮将的行为类似的按钮点击(他们将改变颜色)。显然,我不能编写140个单击事件方法,那么我如何使成为一个可以对所有工作的常规事件?

我想这么做:

代码语言:javascript
复制
protected void btn_Click(object sender, EventArgs e)
        {
            Button btn1 = Panel2.FindControl("btn") as Button;
            btn1.BackColor = Color.Red;
         }

因为所有的按钮都叫btn。

我是这样添加按钮的:

代码语言:javascript
复制
for (int a = 1; a <= 10; a++)
            {
                for (char b = 'A'; b <= 'N'; b++)
                {
                    btn = new Button();
                    btn.Text = "";
                    btn.Height = 20; btn.Width = 20;
                    btn.ToolTip = a + " " + b;
                    Panel2.Controls.Add(btn);
                }
                Panel2.Controls.Add(new LiteralControl("<br/>")); // this inserts a paragraph

            }

我不知道btn_Click(object sender, EventArgs e)是否有效,因为在我点击一个按钮之后,所有的东西都消失了。,我怎样才能解决这个问题?

最后,我需要计算多少个按钮是红色的。我下面的想法可行吗?我们知道如何找到名为" btn“的按钮控件,,但我如何找到”具有特定属性的按钮,例如,查找带有tooltip=1A的按钮。,我将遍历所有工具提示(1A,. 10N),检查每个按钮(考虑到它们有唯一的工具提示),每次检查颜色。对于每种红色颜色,我都会计数一个按钮。“

问题是他们都叫"btn“吗?现在,我可以通过工具提示来区分它们: 1A,1B,...10N,正如我所说的。非常感谢。

编辑>>>>>>>我尝试了Ben的建议,问题是当我单击其中任何一个按钮时,所有的按钮都消失了。谢谢你的耐心。

代码语言:javascript
复制
public partial class Seatalloc2 : System.Web.UI.UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                PopulateControls();
            }
        }

        protected void PopulateControls()
        {

            Panel1.Visible = true;
            Button btn;

            Panel2.Visible = true;
            DropDownList nrbileteddl = Panel1.FindControl("nrBileteddl") as DropDownList;
            nrbileteddl.Visible = true;

            for (int i = 1; i <= 5; i++)
            {
                nrbileteddl.Items.Add(i + "");
            }

            for (int a = 1; a <= 10; a++)
            {
                for (char b = 'A'; b <= 'N'; b++)
                {
                    btn = new Button();
                    btn.Text = "";
                    btn.Height = 20;
                    btn.Width = 20;
                    btn.ToolTip = a + " " + b;
                    btn.BackColor = Color.Green;
                    btn.Click += new EventHandler(btn_Click);
                    Panel2.Controls.Add(btn);
                }
                Panel2.Controls.Add(new LiteralControl("<br/>"));
            }
        }

        protected void btn_Click(object sender, EventArgs e)
        {
            Button btn = sender as Button;
            btn.BackColor = Color.Red;
        }
    }
EN

回答 3

Stack Overflow用户

发布于 2012-06-15 18:30:08

你问了几个不同的问题。

您可以创建动态按钮(或任何其他控件),但是为了使它们与页面生命周期、事件和视图状态保持同步,您需要在页面生命周期的初始化阶段创建它们(我无法从代码中理解这是否是您要做的)

您调用变量"btn",但这不是在ASP.NET中标识控件的方法,每个控件都有一个ID (和一个UniqueID),这些ID应该是唯一的。如果将相同的事件处理程序附加到您的按钮上,则不需要在事件处理程序中找到触发按钮,而是作为处理mehotds事件的一部分接收到的发送方对象。

我强烈建议您阅读此msdn页面,它解释了您询问的所有内容。

票数 1
EN

Stack Overflow用户

发布于 2012-06-15 18:29:31

您所需要做的就是在每个Button.Click上挂上一个事件处理程序。这将使发件人成为按钮,因此您可以将其转换为按钮设置它的颜色为红色。在相同的方法中,您将增加一些本地字段来增加红色按钮的数量。

这样的伪代码:

代码语言:javascript
复制
       int red_ = 0;
    void Method()
    {
        for(int i=0; i< 100; i++)
        {

            Button btn = new Button();
            btn.Click += new EventHandler(btn_Click);
        }
    }

    void btn_Click(object sender, RoutedEventArgs e)
    {
        Button btn = sender as Button;
        // set btn to red
        red_++;
    }
票数 0
EN

Stack Overflow用户

发布于 2012-06-15 18:53:59

向ASP.NET控件提供相同的ID将不会获取所需的结果。如果更改按钮的颜色是唯一的要求,我强烈主张使用JQuery,原因如下:

  1. 易于实现,因为它将在客户端运行,它将非常快
  2. 使用适当的选择器很容易获取点击按钮的计数(您可以使用按钮的任何属性,如ID、CSSClass或按钮的名称。

我的建议是:

  1. 在JQuery中,在文档加载时添加不同In的输入(type=buttons),但名称相同(例如"btn")。
  2. 在JQuery中编写另一个事件,该事件将监听所有名称为"btn“的按钮的单击。在该函数中,使用Style属性更改按钮的颜色。
  3. 最后,如果希望找到多少个按钮是红色的,也可以通过使用适当的样式选择器来使用JQuery。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11056173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档