我使用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.TextEditor(barEditItem)取文本
string editValue = barEditItem1.EditValue.ToString(); //错误,返回null
string editValue = ((DevExpress.XtraEditors.TextEdit)barEditItem).EditValue.ToString();//正确,返回文本框内容但是我在使用的时候,提示不能转换。
错误1无法将类型“DevExpress.XtraBars.BarEditItem”转换为“DevExpress.XtraEditors.TextEdit”
解决方案 »
- VS 2008 自动关闭问题
- 两个子线程如何通讯?
- 怎么用C#的OpenFileDialog打开一个文件夹,而不是文件?
- DropDownList1与DropDownList2的问题?
- 加密字符串解密
- 【初学者求教】Datagridview`SQL语句问题
- winform运行后,按回车,要在label1里显示"a",怎么写代码
- DataGridView的数据源如果不是DataTable,是实体类,我在界面上改值以后,它会怎么处理?救命啊
- 使用多线程是不是都要使用sleep()来延迟?
- 那个鸟人扣我的信誉分?三分
- C# 窗体中多个按钮共享一个事件,怎么解决?
- VS2010怎么发布一个控制台程序呀
其实这段代码是有使用条件的,如果单单是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();
}
}
{
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就可以获取到值了。