본문 바로가기

IT/Component

[Devexpress] RepositoryItemRichTextEdit AutoHeight by Enter Key

Grid 에서 RichEdit  쓸때 엔터키로 높이 자동 조절...

  
   

// GridVIew 행 높이 자동 조절 활성화
gvMain.OptionsView.RowAutoHeight = true;

// 특정 컬럼에 Editor 를 할당
RepositoryItemRichTextEdit mEdit = new RepositoryItemRichTextEdit();
mEdit.KeyUp += mEdit_KeyUp;
this.gvMain.Columns["REMARK"].ColumnEdit = mEdit;

// 엔터키 입력시 Editor 를 Close 함으로써 그리드가 행 높이를 자동 조절하게 하고
// 다시 Editor 를 활성화해서 이전에 입력한 Caret 위치를 복원해준다
void mEdit_KeyUp(object sender, KeyEventArgs e)
{
	if (e.KeyCode == (Keys.Enter))
	{
		RichTextEdit editor = (RichTextEdit)sender;
		PropertyInfo myPropertyInfo1 = editor.GetType().GetProperty("InnerControl", BindingFlags.NonPublic | BindingFlags.Instance);
		RichEditControl control = myPropertyInfo1.GetValue(editor, null) as RichEditControl;
		DevExpress.XtraRichEdit.API.Native.DocumentPosition prevPos = control.Document.CaretPosition;
		
		gvMain.CloseEditor();
		gvMain.ShowEditor();

		control.Document.CaretPosition = prevPos;				
	}
}