2010-08-06 7 views
1

문자 카운터를 만들려고합니다. 40/200 ... 41/200 등등. 이제 텍스트 상자 제어를 위해 나는 MemoExEdit 컨트롤에 문자 카운터 추가

public static void GetRemainingChars(MyTextBox txt, LabelControl lbl) 
    { 
     var maxChars = txt.Properties.MaxLength; 
     lbl.Text = txt.Text.Length + "/" + maxChars; 
    } 

는 불행하게도 MemoExEdit 컨트롤을 사용하면에 텍스트를 입력하고 것을이 숨겨져있는 것 같다 팝업 창을 가지고 ...이 같은과의 keyup 이벤트에 접선하고있다. 나는 KeyUp, EditValueChanging, TextChanged을 시도했는데 모두 똑같습니다. 사용자가 팝업을 닫을 때까지 실행되지 않습니다. 나는 그것을 닫을 때 editvalue를 전송하는 복합 컨트롤이라고 추측합니다.

팝업 이벤트를 어떻게받을 수 있습니까? 이 작업을 수행하는 다른 방법이 있습니까?

답변

4

다른 곳에서는 찾을 수 없기 때문에 다른 사람의 이익을 위해 솔루션을 게시합니다.

EditValueChanging 이벤트에 가입 한 MemoExEdit 컨트롤의 Popup 이벤트를 구독하십시오. 그것이 당신이 연결할 수있는 곳입니다. 제 작업 버전은 아래를보십시오. 비틀기는 너 자신을 위해 필요할지도 모른다. 또한 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; 
} 
+0

나는 코드가 절대적으로 정확한지 확인할 수 있습니다. :) –