将字符计数器添加到MemoExEdit控件

时间:2010-08-06 13:25:45

标签: c# .net winforms events devexpress

我正在尝试制作一个字符计数器, 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控件有一个弹出窗口,您可以在其中键入文本,并且似乎被隐藏。我尝试了KeyUpEditValueChangingTextChanged,他们都做了同样的事情。在用户关闭弹出窗口之前,它们不会触发。我猜它是一个复合控件,它在关闭时传递editvalue。

关于如何获得弹出窗口事件的任何想法?有没有不同的方法来做到这一点?

1 个答案:

答案 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;
}