DropDownList.ClearSelection()和DropDownList.SelectedIndex=-1有什么区别?

5
什么是两者之间的差异?
DropDownList.ClearSelection();

并且
DropDownList.SelectedIndex = -1;

在使用下拉列表时,需要注意什么?
编辑: 我知道 MSDN 上有这些定义。但是有人能提供实现/实际使用的区别吗?
1个回答

9

查看 System.Web.UI.WebControls.ListControl 的源代码,从中派生出 DropdownList,似乎设置 SelectedIndex 实际上会调用 ClearSelection();如果不是 -1,则会继续选择该项。

    public virtual void ClearSelection() {
        for (int i=0; i < Items.Count; i++)
            Items[i].Selected = false;
    }

    public virtual int SelectedIndex {
        set {
            ...
            if ((Items.Count != 0 && value < Items.Count) || value == -1) {
                ClearSelection();
                if (value >= 0) {
                    Items[value].Selected = true;
                }
            }
            ...
        }

编辑:回答你的问题,直接调用ClearSelection()可以避免一些(不重要的)if语句。


1
这就是开源代码后开发人员获得的优势(Y)。 - Ehsan Sajjad
1
说实话,因为我懒,所以我确实使用了反射器。但这里提供来自微软的参考源代码 - NPras
你使用的反射器是哪一个? - Ehsan Sajjad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接