我正在尝试制作一个字符计数器, 40/200 ... 41/200 等等。现在对于文本框控件,我正在使用类似的东西挂钩到KeyUp事件......
public static void GetRemainingChars(MyTextBox txt, LabelControl lbl)
{
var maxChars = txt.Properties.MaxLength;
lbl.Text = txt.Text.Length + "/" + maxChars;
}
不幸的是,MemoExEdit控件有一个弹出窗口,您可以在其中键入文本,并且似乎被隐藏。我尝试了KeyUp
,EditValueChanging
,TextChanged
,他们都做了同样的事情。在用户关闭弹出窗口之前,它们不会触发。我猜它是一个复合控件,它在关闭时传递editvalue。
关于如何获得弹出窗口事件的任何想法?有没有不同的方法来做到这一点?
答案 0 :(得分:4)
仅仅因为我无法在其他任何地方找到这个,我会发布我的解决方案以获得其他好处。
订阅MemoExEdit控件的Popup事件,然后在订阅EditValueChanging事件的内部。这是你可以进入的地方。请参阅下面的MY工作版。您可能需要调整。此外,Popup事件是在我的Designer.cs文件中创建的。
private void memContactWith_Properties_Popup(object sender, EventArgs e)
{
MemoExPopupForm popupForm = (sender as DevExpress.Utils.Win.IPopupControl).PopupWindow as MemoExPopupForm;
MemoEdit me = popupForm.Controls[2] as MemoEdit;
me.EditValueChanging += new DevExpress.XtraEditors.Controls.ChangingEventHandler(me_EditValueChanging);
}
void me_EditValueChanging(object sender, DevExpress.XtraEditors.Controls.ChangingEventArgs e)
{
var memo = (sender as MemoEdit);
var maxChars = memo.Properties.MaxLength;
lblContactWithCharCount.Text = memo.Text.Length + "/" + maxChars;
}