[VS2005]Bug or Design?

在VS2005以前的版本,如果我们调用下面的逻辑

// Form中包含一个ComboBox Control。
public void Form_Load(object sender, EventArgs e)
{
  
this.comboBox1.DropDownStyle = DropDownStyle.DropDown; // 注意不是DropDownList.
  this.comboBox1.Items.Add("Test1");
  
this.comboBox1.Items.Add("Test2");
  
this.comboBox1.Items.Add("Test3");
  this.comboBox1.Items.Add("Test4");
  
this.comboBox1.SelectedIndex = 0;
}


public void button1_Click(object sender, EventArgs e)
{
  
this.comboBox1.Text = "Test"//该项不存在于Items中
  Debug.WriteLine(this.comboBox1.SelectedIndex.ToString());
}

返回的结果是-1.因为没有任何一项被选中。

但是,如果我们在VS2005中运行上面的代码,结果却是0

这是VS2005的Bug还是它的Design。

Bug:
    与以前的版本不兼容;
    数据会丢失;(我没有具体试验,在某些情况下,似乎设进取的Text会丢掉)

Design:
    将SelectedIndex和当前显示的Text分开。(似乎有些牵强,但好像也有些合理性)

博客园里微软的人很多,有没有能够出面澄清一下。大家也许也会有一些自己的看法。
posted @ 2005-12-09 13:14 Colin Han 阅读(1043) 评论(4)  编辑 收藏 网摘 所属分类: Bugs

  回复  引用    
#1楼 2005-12-09 18:34 | yuxs [未注册用户]
试验了一下
如果this.comboBox1.Text中的内容是手工输入的话,SelectedIndex还是-1
但程序写入就是0

  回复  引用  查看    
#2楼 2005-12-09 22:36 | 孔曰成仁,孟曰取E      
我倒
  回复  引用    
#3楼 2005-12-10 14:47 | LinFengCyl [未注册用户]
那应该是如此设计的
  回复  引用  查看    
#4楼 2005-12-12 11:32 | montaque      
呵呵,用reflector 看一下实现,你就全明白了

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2006-01-11 20:38 编辑过
"五向定位"职业成长路线公开课(上海、南京、大连)
Google站内搜索


相关链接: