请教DevExpress barEditItem 转 TextEdit问题。

sinomac 2013-11-01 03:33:45
我使用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”
...全文
1410 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sinomac 2013-11-07
  • 打赏
  • 举报
回复
这个控件它身身可以添加按钮,你用窗体上添加按钮点获取这个值是对的。如果让他自身右边的按钮点返回的就是NULL,我想请问一下,可不可以用其它方式来获取,比如委托(我对委托一知半解),或其它方式来获取这个值。谢谢!
  • 打赏
  • 举报
回复
看你说的你好像用的是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就可以获取到值了。
  • 打赏
  • 举报
回复 1
这个还真是要说两句了,你所谓的网上找到的这些其实是我很多年前写的,被其他地方转了很多。。。废话少说。 其实这段代码是有使用条件的,如果单单是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();
	}
}

liufenghuaNet 2013-11-02
  • 打赏
  • 举报
回复
你确定这样写是错的??string editValue = barEditItem1.EditValue.ToString();

111,076

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧