C# vsto拖拽到单元格,拖拽前获取单元格对象

C# vsto drag drop to cell, get the cell object before dropping

以下代码运行良好。我可以将一个项目从列表视图中拖放到一个单元格中。

private void treeView1_MouseMove(object sender, MouseEventArgs e)
{
     if (e.Button == MouseButtons.Left)
    {
        if (treeView1.SelectedNode != null)
        {
             treeView1.DoDragDrop(DragData.ToString(), DragDropEffects.Copy); 
        }
    }
}

我的问题是我是否可以根据要放置的单元格更改 DragDropEffects。

比如不允许拖拽item到cell[A1],所以希望DragDropEffects可以是'none',包括mouse style在mouse only时应该是一个disallowed mark单元格[A1].

希望能找到地方写下面的代码

private void mouse_on(Excel.Range targetRange){
    if(targetRange.Address == "A1"){
        DragDropEffects.None;
    }else{
        DragDropEffects.Copy;
    }
}

VSTO(也不 Excel)没有为此提供任何东西。

您可以尝试使用范围 class 的 Locked 属性 来指示对象是否被锁定。 属性 returns 如果对象被锁定则为真,如果对象在 sheet 受保护时可以修改则为假,如果指定范围同时包含锁定和未锁定的单元格则为空。

Protect方法保护作品sheet,使其无法被修改。

因此,您可以保护工作sheet,并将可以删除数据的区域的锁定属性 设置为false。希望对你有帮助。