举个例子:
Dictionary<string,string>dic=new Dictionary<string,string>();
dic["记事本"]=@"C:\Windows\notepad.exe";
dic["计算器"]=@"C:\Windows\calc.exe";cb.Items.Add("记事本");
cb.Items.Add("计算器");void SomeEvent(object sender,EventArgs e)
{
 cb.Text=dic[cb.SelectedItem.ToString()];
}
意思是,ComboBox列表中其实显示的是“记事本”和“计算器”,但是当选择某一项时,希望ComboBox的文本框里显示成其路径
我试了DropDownClosed,SelectedIndexChanged,SelectionChangeCommitted事件,都不行,应该是这些事件触发的时机太早,我虽然修改了其文本框内容,但其实又被自动改回去了我尝试了DisplayMember和ValueMember这种方式也不行,因为选择后,其文本内容也会以DisplayMember的方式显示

解决方案 »

  1.   

    在同一个combox里面,估计是不行的。你可以弄两个,一个隐藏。级连一下。
    如果在同一个combox里的话,你可以选择之后重新绑定(绑定你要显示的值)
      

  2.   

    可以的。
    if(! combox.Items.Contains("路径") )
    {
      combox.Items.Add("路径");
    }
    combox.Text="路径";应该可以  我用过
      

  3.   

    用list保存路径和combbox中对应的索引
    然后在combbox selectindexchanged事件里面获得选中索引。然后给combbox赋值路径
    这样路径和item分开了
      

  4.   

    ====>
    你这回答根本就没看清问题,我当然知道对Text属性赋值可以改变文本值,如果你单独弄一个按钮点击当然没问题,现在是要求选择项后立刻就换,而你在选择项的相关事件中对其赋值是没用======>拜托你试一下,在selectindexchanged事件中赋值是没用的
      

  5.   

    你把它comboBox1_SelectedIndexChanged事件中试试?
      

  6.   

    if(! combox.Items.Contains("路径") )
    {
      combox.Items.Add("路径");
    }
    combox.Text="路径";
      

  7.   

    在SelectIndexChanged里面做一个Delegate调用。 BeginInvoke(new MethodInvoker(
                    () => { combox.Text = "对应路径"; }
                    ));