【问题标题】:Programmatically created controls overwriting each other以编程方式创建的控件相互覆盖
【发布时间】:2014-03-06 11:25:08
【问题描述】:

我正在 C# .net 网站后面的代码中创建标签。标签包含一些我从服务器返回的标准数据。

我的问题是我想为这些创建的控件添加一个按钮(在标签内),但附加控件将覆盖标签中定义的文本。

我有什么办法来阻止这种情况?

for (var i = 0; i < (QuoteArray.Length)-1; i++)
        {
            Button[] btnArr = new Button[QuoteArray.Length]; //not used

            var button = new Button
            {
                ID = "Quote_0" + i,
                CommandArgument = "i",
                Text = "!!",
                CssClass = "CountButton"
            };

            Label addL1 = new Label
            {
                ID = "new_labeieeu" + i,
                Text = string.Format("Tariff: {1}</br>Reference: {0}</br>Price: £{3}</br>excl. VAT.</br>Max Passenger: {4}</br>Max Luggage: {5}</br>{2}</br>", QuoteArray[i][0], QuoteArray[i][1], QuoteArray[i][2], QuoteArray[i][3], QuoteArray[i][4], QuoteArray[i][5], QuoteArray[i][6]),
                CssClass ="QuoteButton"

            };
            panelQuote.Controls.Add(addL1);
            addL1.Controls.Add(button);
        }

【问题讨论】:

    标签: asp.net controls


    【解决方案1】:

    您正在将按钮添加到标签,您可以这样做

    panelQuote.Controls.Add(addL1);
    panelQuote.Controls.Add(button);
    

    这将在您的标签旁边添加按钮。

    【讨论】:

    • 这不像我想要的那样工作,因为按照设计,按钮应该在标签内
    【解决方案2】:

    它并不漂亮,但我最终添加了另一个面板,以便标签和按钮都进入这个面板,然后我可以根据需要设置它们的样式。这确实意味着一个里面有 40 个奇怪的面板,但现在没关系。

        for (var i = 0; i < (QuoteArray.Length)-1; i++)
            {
                Button[] btnArr = new Button[QuoteArray.Length];
    
                Panel panel_Inside_Quote = new Panel
                {
                    ID = "InnerQuote_" +i,
                    CssClass = "QuoteButton"
                    //string bob = Convert.ToString(stop);
                };
    
                panelQuote.Controls.Add(panel_Inside_Quote);
    
                Button button = new Button
                {
                    ID = "Quote_0" + i,
                    CommandArgument = "i",
                    Text = "!!",
                    CssClass = "CountButton"
                };
    
                Label addL1 = new Label
                {
                    ID = "new_labeieeu" + i,
                    Text = string.Format("Tariff: {1}</br>Reference: {0}</br>Price: £{3}</br>excl. VAT.</br>Max Passenger: {4}</br>Max Luggage: {5}</br>{2}</br>", QuoteArray[i][0], QuoteArray[i][1], QuoteArray[i][2], QuoteArray[i][3], QuoteArray[i][4], QuoteArray[i][5], QuoteArray[i][6]),
                    CssClass ="QuoteButton"
    
                };
                panel_Inside_Quote.Controls.Add(addL1);
                panel_Inside_Quote.Controls.Add(button);
                //Make_Booking_Page(this, new EventArgs());*/
            }
    

    【讨论】:

    • 另一种方法是有一个标签 L,然后将所需的标签和按钮添加到此标签 L。但它仍然需要以编程方式找到所需标签的点,然后设置 X co-纵坐标到 +n,然后在该点上添加按钮。但是您的解决方案不那么笨拙。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-07
    • 1970-01-01
    • 2020-02-26
    • 1970-01-01
    • 1970-01-01
    • 2011-08-16
    相关资源
    最近更新 更多