WinForms윈폼 Cell 의 내용을 지웠을때 기본적으로 넣어지는 값을 지정할 수 있을까요?
페이지 정보
작성자 iroon 작성일 2023-08-17 15:59 조회 523회 댓글 0건본문
관련링크
선택 셀을 Del 키를 눌러 지웠을때 빈칸이 되지 않고, 지정된 값(Default)이 들어가게 할수 있을까요?
예를 들어 1.0 이라든지 0.00 등으로요..
댓글목록
등록된 댓글이 없습니다.
선택 셀을 Del 키를 눌러 지웠을때 빈칸이 되지 않고, 지정된 값(Default)이 들어가게 할수 있을까요?
예를 들어 1.0 이라든지 0.00 등으로요..
등록된 댓글이 없습니다.
iroon 님, 안녕하세요.
그레이프시티입니다.
문의하신 내용이 숫자셀 타입에서의 동작을 원하시는 게 맞으실까요?
만약 그렇다면, 아래 샘플 코드와 같이 사용자 정의 셀 타입을 사용하여, 셀의 value가 null일 때 지정한 기본 값이 화면에 표시되도록 하실 수 있습니다.
CustomNumberCellType customNuberCell = new CustomNumberCellType(); fpSpread1.ActiveSheet.Columns[0].CellType = customNuberCell; public class CustomNumberCellType : FarPoint.Win.Spread.CellType.NumberCellType { public override void PaintCell(Graphics g, Rectangle r, FarPoint.Win.Spread.Appearance appearance, object value, bool isSelected, bool isLocked, float zoomFactor) { base.PaintCell(g, r, appearance, (value is null) ? 0.00f : value, isSelected, false, zoomFactor); } }
다만 이 경우, 화면에는 설정한 기본 값이 보여지지만 실제 value 속성은 null 입니다.
샘플의 동작이 원하시는 기능과 다를 경우, 구현하고 싶으신 기능/사용 목적을 조금 더 구체적으로 공유해주시면 확인 후 안내 드리겠습니다.
예시:
1) 처음에는 빈 셀이 보여지다가, 값을 입력했다 지운 경우에만 기본값이 보여지길 원한다.
2) 숫자 셀 뿐만 아니라 일반 셀에서 텍스트를 입력했다가 지우는 경우도 있다.
3) 기본값이 화면에 보여질 뿐만 아니라 셀의 value 속성 값으로 설정되길 원한다.
등...
감사합니다.
그레이프시티 드림
다음과 같이 사용자정의 TextCelltype을 만들어 사용하실 수 있습니다.
iroon 님, 안녕하세요.
그레이프시티입니다.
해당 기능은 Spread.NET에서 기본적으로 지원하는 기능은 아닙니다.
대신 대안으로, CellChanged 이벤트를 활용하여 셀의 값을 지웠을 때, 셀이 빈 셀로 보여지는 것이 아니라 셀의 value 속성에 기본 값이 입력되게 할 수 있습니다.
아래 샘플 코드를 참고 바랍니다.
private void Form1_Load(object sender, EventArgs e) { fpSpread1.ActiveSheet.Columns[0].CellType = new FarPoint.Win.Spread.CellType.NumberCellType(); fpSpread1.ActiveSheet.Columns[1].CellType = new FarPoint.Win.Spread.CellType.TextCellType(); fpSpread1.ActiveSheet.CellChanged += ActiveSheet_CellChanged; } private bool _changingDefaultValue; private void ActiveSheet_CellChanged(object sender, FarPoint.Win.Spread.SheetViewEventArgs e) { if (_changingDefaultValue) { return; } _changingDefaultValue = true; FarPoint.Win.Spread.SheetView sheetView = (FarPoint.Win.Spread.SheetView)sender; for (int c = e.Column, c2 = c + e.ColumnCount; c < c2; c++) { for (int r = e.Row, r2 = r + e.RowCount; r < r2; r++) { if (sheetView.GetValue(r, c) == null) { switch (sheetView.GetCellType(r, c)) { case FarPoint.Win.Spread.CellType.NumberCellType: sheetView.SetValue(r, c, 1); break; case FarPoint.Win.Spread.CellType.TextCellType: sheetView.SetValue(r, c, "Empty"); break; } } } } _changingDefaultValue = false; }
감사합니다.
그레이프시티 드림
등록된 댓글이 없습니다.