김재호 님, 안녕하세요.
그레이프시티입니다.
1. 스프레드 시트설정 / 보호 클릭시 머리글이 음영으로 되는데, 특정 Column만 ReadOnly 또는 Lock 설정하여 쓰기가 안되도록 하고 싶습니다.
보호 클릭 시, 해당 시트의 Protect 속성값이 true로 설정됩니다. 이때, 기본적으로 시트의 머리글과 전체 셀의 Locked 속성값이 true로 설정되어있는 상태이므로, 머리글과 셀 전체가 편집 불가능하게 보호됩니다.
따라서, 특정 컬럼에 대해서만 Lock을 설정하고 싶다면, 우선 머리글과 전체 셀에 대하여 Locked 속성값을 false로 변경한 후, 원하는 컬럼에 대해서만 Locked 속성값을 true로 설정해야합니다. 적용방법은 하기 코드를 참고하여주시기 바랍니다.
private void Form1_Load(object sender, EventArgs e)
{
// 시트의 전체 컬럼과, 머리글에 대한 잠금 해제
fpSpread1.Sheets[0].Columns[-1].Locked = false;
fpSpread1.Sheets[0].ColumnHeader.Columns[-1].Locked = false;
fpSpread1.Sheets[0].RowHeader.Rows[-1].Locked = false;
// 컬럼A와 컬럼A의 머리글에 대한 잠금 설정
fpSpread1.Sheets[0].Columns[0].Locked = true;
fpSpread1.Sheets[0].ColumnHeader.Columns[0].Locked = true;
// 시트보호 설정
fpSpread1.Sheets[0].Protect = true;
}
2. 스프레드 입력맵 / Enter 이벤트 Move To Column 에서 마지막 컬럼 엔터시 다음줄 첫번째 컬럼으로 이동 방법 부탁 드립니다.
하기 코드와 같이 CustomMoveToNextColumn을 정의하여, 마지막 컬럼에서 엔터키 입력시 다음 행의 첫번째 컬럼으로 이동하게 할 수 있습니다.
private void Form1_Load(object sender, EventArgs e)
{
FarPoint.Win.Spread.InputMap im = fpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenFocused);
FarPoint.Win.Spread.ActionMap am = fpSpread1.GetActionMap();
im.Put(new FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), "CustomMoveToNextColumn");
am.Put("CustomMoveToNextColumn", new CustomMoveToNextColumn());
}
internal class CustomMoveToNextColumn : FarPoint.Win.Spread.Action
{
public override void PerformAction(object sender)
{
if (sender is FarPoint.Win.Spread.SpreadView)
{
FarPoint.Win.Spread.SpreadView spread = (FarPoint.Win.Spread.SpreadView)sender;
FarPoint.Win.Spread.SheetView sheet = spread.Sheets[spread.ActiveSheetIndex];
if (sheet.ActiveColumnIndex == sheet.ColumnCount - 1)
{
sheet.ActiveColumnIndex = 0;
sheet.ActiveRowIndex += 1;
}
else
{
sheet.ActiveColumnIndex += 1;
}
}
}
}
Spread.NET V14 - 액션 맵과 함께 입력 맵 사용 도움말 문서
추가로 궁금하신 사항이 있을 경우, 문의주시기 바랍니다.
감사합니다.
그레이프시티 드림