我使用DEV。在网上找好多资料都是这样子的:DevExpress控件使用 
1.TextEditor(barEditItem)取文本 
string editValue = barEditItem1.EditValue.ToString();    //错误,返回null
 
string editValue = ((DevExpress.XtraEditors.TextEdit)barEditItem).EditValue.ToString();//正确,返回文本框内容但是我在使用的时候,提示不能转换。
错误1无法将类型“DevExpress.XtraBars.BarEditItem”转换为“DevExpress.XtraEditors.TextEdit”

解决方案 »

  1.   

    你确定这样写是错的??string editValue = barEditItem1.EditValue.ToString();    
      

  2.   

    这个控件它身身可以添加按钮,你用窗体上添加按钮点获取这个值是对的。如果让他自身右边的按钮点返回的就是NULL,我想请问一下,可不可以用其它方式来获取,比如委托(我对委托一知半解),或其它方式来获取这个值。谢谢!
      

  3.   

    这个还真是要说两句了,你所谓的网上找到的这些其实是我很多年前写的,被其他地方转了很多废话少说。
    其实这段代码是有使用条件的,如果单单是Bar上的BarEditItem(TextEdit),在你编辑完并且焦点离开的时候(比如你点击了画面上其他的按钮),使用barEditItem1.EditValue.ToString();并不会报错,可以取到正确的值。
    但是,如果你想在编辑完直接回车,这时候焦点并未离开编辑框,取到的EditValue确实是null,需要转换一下。当时是当笔记记录的,没想到会造成很多人误解。private void Form1_Load(object sender, EventArgs e)
    {
    this.barEditItem1.Edit.KeyDown += new KeyEventHandler(Edit_KeyDown);
    }
    void Edit_KeyDown(object sender, KeyEventArgs e)
    {
    if(e.KeyCode ==  Keys.Enter)
    {
    this.labelControl1.Text = (sender as DevExpress.XtraEditors.TextEdit).EditValue.ToString();
    }
    }
      

  4.   

    看你说的你好像用的是ButtonEdit,在你添加这个Edit的时候Dev会自动添加一个repositoryItemButtonEdit1,你的事件想必是这样的:private void Form1_Load(object sender, EventArgs e)
    {
    this.repositoryItemButtonEdit1.ButtonClick += new DevExpress.XtraEditors.Controls.ButtonPressedEventHandler(repositoryItemButtonEdit1_ButtonClick);
    }void repositoryItemButtonEdit1_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
    {
    this.labelControl1.Text = (sender as DevExpress.XtraEditors.ButtonEdit).EditValue.ToString();在ButtonClick事件中,只要转换为ButtonEdit就可以获取到值了。