DevExpress.XtraSpreadsheet.SpreadsheetControl 首行禁止修改
https://www.cnblogs.com/yellow3gold/
最近使用SpreadsheetControl 的时候,由于第一行是标题行,用户不想修改标题行的内容。最开始的时候我设置了SpreadsheetControl的CellBeginEdit事件失效;
spreadsheetControl.CellBeginEdit += CellBeginEdit;
private void CellBeginEdit(object sender, SpreadsheetCellCancelEventArgs e) { if (e.RowIndex == 0) e.Cancel = true; }
这样操作之后确实不能直接编辑首行的单元格了,但是如果你通过粘贴的方式去修改首行,还是会被修改掉,于是我又加了一段代码屏蔽了首行粘贴的修改;
spreadsheetControl.CopiedRangePasting += CopiedRangePasting;
private void CopiedRangePasting(object sender, CopiedRangePastingEventArgs e) { if (e.TargetRange.TopRowIndex == 0) e.Cancel = true; }
更新 2022年7月14日08点48分
以下代码防止用户按Delete键删除
protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { try { if (keyData == Keys.Delete) { if (spreadsheetControl == null) { return base.ProcessCmdKey(ref msg, keyData); } Range range = spreadsheetControl.ActiveWorksheet.Selection; if (range[0].RowIndex == 0) { return true; } return base.ProcessCmdKey(ref msg, keyData); } return base.ProcessCmdKey(ref msg, keyData); } catch (Exception ex) { MessageBox.Show(ex.Message); } return true; }
好了,加上这几段代码,就可以实现DevExpress.XtraSpreadsheet.SpreadsheetControl 首行禁止修改