Ich versuche, ein COM-Addin für Excel XP in C# zu schreiben, das das Doppelklicken auf eine Zelle deaktiviert, um es zu bearbeiten.SheetBeforeDoubleClick von COM Addin
Ich möchte eine Box öffnen, die besagt, dass das Bearbeiten einer Zelle auf diese Weise verboten ist und dann alle Ausführung stoppen.
Blick durch die Dokumentation zu Microsoft dies wie eine sehr einfache Aufgabe scheint, erstellen Sie eine Anwendungsereignis AppEvents_SheetBeforeDoubleClickEventHandler
mit der Unterschrift func(object sheet, Range Target, ref bool Cancel)
und Sie setzen Cancel
auf true, so dass die Ausführung stoppt.
Ich habe folgendes:
public void OnConnection(object application, Extensibility.ext_ConnectMode connectMode, object addInInst, ref System.Array custom)
{
Excel.Application app = application as Excel.Application;
app.SheetBeforeDoubleClick += Excel.AppEvents_SheetBeforeDoubleClickEventHandler(beforeDoubleClick);
}
void beforeDoubleClick(object sheet, Excel.Range Target, ref bool Cancel)
{
MessageBox.Show("Cannot edit cells this way sorry.");
Cancel = true;
}
Das Meldungsfeld wird angezeigt, aber die Zelle dann in den Bearbeitungsmodus versetzt wird, aber wenn ich die gleiche Sache von VBA haben es funktioniert.
Das gleiche passiert mit einem VB.NET Addin mit dem folgenden Code.
Hey, wollte nur sagen, danke für die Zeit. Ich habe kürzlich an einem Projekt gearbeitet, für das ich diese Art von Funktionalität benötige, und ich kompiliere tatsächlich mit VS 2008 mit .NEt 3.5, aber für Excel 2002. Ich werde die Problemumgehung versuchen. Danke noch einmal. –
Laut diesem Artikel sollten Sie mit VS 2008 in Ordnung sein. Hmmm ... Ok, möchten Sie vielleicht überprüfen Sie http://support.microsoft.com/kb/948461. Es besagt, dass ein Fehler ausgelöst werden sollte, aber wenn nicht, dann kann .NET 1.1 einfach ruhig ausgeführt werden und daher das Verhalten "Ereignis abbrechen" ignorieren. –