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 首行禁止修改

 

posted @ 2022-05-12 09:33  新*  阅读(500)  评论(0编辑  收藏  举报