0

我正在尝试获取 DropDownList 的宽度,并且它的末尾不断出现“px”。我所追求的最终结果是确定 DropDownList 中所有项目的宽度,以便我可以以编程方式设置宽度。

这是我所拥有的:

    public static int FindTheWidth(object sender)
    {
        DropDownList senderComboBox2 = (DropDownList)sender;
        //            int width = senderComboBox.Width;

        var s = senderComboBox2.Width;
        var CBW = s.SubString(0, s.IndexOf("p"));
        int width2 = Convert.ToInt32(CBW);
        int vertScrollBarWidth = 2;

        int newWidth;
        foreach (string s in ((DropDownList)sender).Items)
        {
            newWidth = width2 + vertScrollBarWidth;
            if (width2 < newWidth)
            {
                width2 = newWidth;
            }
        }
        senderComboBox2.Width = width2;
        return width2;
    }

有任何想法吗?

4

2 回答 2

0

我遇到过的最糟糕的逻辑..为什么要在业务层尝试表示层功能,就像那样...这是您试图在服务器代码中实现的设计问题?您可以尝试在设计结束时设置宽度。

于 2013-04-16T06:27:44.423 回答
0

该代码有很多铸造问题。

类型WebControl.Width.Value应该加倍。

类型((DropDownList)sender).Items应该是 ListItemCollection。

public static int FindTheWidth(object sender)
{
    DropDownList senderComboBox2 = (DropDownList)sender;
    var width = senderComboBox2.Width;

    double doubleValue = width.Value;
    int width2 = (int)doubleValue;
    int vertScrollBarWidth = 2;

    int newWidth;
    foreach (ListItem s in ((DropDownList)sender).Items)
    {
        newWidth = width2 + vertScrollBarWidth;
        if (width2 < newWidth)
        {
            width2 = newWidth;
        }
    }
    senderComboBox2.Width = width2;
    return width2;
}
于 2013-04-15T17:15:00.853 回答