2015-07-10 155 views
0

以下代碼運行良好。我可以從列表視圖中拖動一個項目並將其放入單元格中。C#vsto拖放到單元格,在刪除之前獲取單元格對象

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

我的問題是,根據我將放棄的單元,我是否可以更改DragDropEffects。

例如,不允許將項目拖放到單元格[A1],所以我希望DragDropEffects可以是'none',包括鼠標樣式在鼠標僅在單元格時應該是不允許的標記[ A1]。

希望我能找到一個地方寫下面的代碼。

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

回答

0

VSTO(也不是Excel)不提供任何相關信息。

您可以嘗試使用Range類的Locked屬性,該屬性指示對象是否被鎖定。如果對象被鎖定,則此屬性返回True,如果可以在工作表受到保護時修改對象,則返回False;如果指定的範圍同時包含鎖定和未鎖定的單元格,則返回Null。

Protect方法保護工作表,使其無法修改。

因此,您可以保護工作表並將Locked屬性設置爲false,以便刪除數據。希望能幫助到你。

+0

謝謝。這似乎是一個很好的解決方法。 – templefox

+0

我試過了,但是當表單受到保護時,我無法設置單元格解鎖。同時它沒有任何影響,我設置了一個單元格鎖定。 – templefox