Farpoint를 사용하면서 Excel이나 다른 스프레드에서 데이터를 복사하여 붙여넣기 하면서
이를 컨트롤하고자 할 때 paste 중에 컨트롤 할 수 있는 이벤트는 있으나 paste가 끝났는지 여부를
알기가 힘듭니다.
이때문에 paste 후 데이터 검사를 하려 해도 타이밍을 잡지 못하고 멍하니 바라만 보고 있다가..
System.Window.Forms.Clipboard 클래스를 이용해 paste 중에 데이터를 직접 컨트롤해 버렸습니다.
펼쳐두기..
private void fpSpread_ClipboardPasting ( object sender, FarPoint. Win. Spread. ClipboardPastingEventArgs e) { e. Handled = true ; string data; string[] rows, cols = new string[] { }; int rowNum, colNum; if (! Clipboard. ContainsData( DataFormats. Text)) return ; rowNum = fpSpread_Sheet1. ActiveRowIndex; colNum = fpSpread_Sheet1. ActiveColumnIndex; data = Clipboard. GetData( DataFormats. Text) as string; data = data. Replace( "\r\n" , Convert. ToChar( 13 ). ToString()); rows = data. Split( new Char[] { Convert. ToChar( 13 ) }); for ( int rowLoop = 0 ; rowLoop < rows. Length - 1 ; rowLoop++) { cols = rows[ rowLoop]. Split( new Char[] { Convert. ToChar( 9 ) }); for ( int colLoop = 0 ; colLoop < cols. Length; colLoop++) fpSpread_Sheet1. Cells[ rowNum + rowLoop, colNum + colLoop]. Value = cols[ colLoop]; fpSpread_Sheet1. SetActiveCell( rowNum + rowLoop, colNum); } fpSpread_Sheet1. ClearSelection(); fpSpread_Sheet1. SetActiveCell( rowNum, colNum); fpSpread_Sheet1. AddSelection( rowNum, colNum, rows. Length - 1 , cols. Length); }
크리에이티브 커먼즈 라이선스
Posted by Kuro™
댓글 없음:
댓글 쓰기