Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Excel加载项表单在表单关闭时将Excel发送到后台_C#_Forms_Excel_Popup - Fatal编程技术网

C# Excel加载项表单在表单关闭时将Excel发送到后台

C# Excel加载项表单在表单关闭时将Excel发送到后台,c#,forms,excel,popup,C#,Forms,Excel,Popup,我有一个弹出表单的Excel加载项。如果用户填写一些值并单击“应用”按钮,则这些值将正确发送到基础工作表,弹出表单将关闭。但是,如果用户单击“取消”,则会弹出一个消息框,验证用户是否要取消。单击“是”会关闭弹出表单,但也会将Excel发送到以前活动的窗口后面——非常类似于按Alt Tab键。这不好 有人对如何保持Excel的领先地位有什么想法吗 谢谢 Randy你可以把它放在消息框ActiveWindow.ActivatePrevious 测试 Debug.Print ActiveWindow.

我有一个弹出表单的Excel加载项。如果用户填写一些值并单击“应用”按钮,则这些值将正确发送到基础工作表,弹出表单将关闭。但是,如果用户单击“取消”,则会弹出一个消息框,验证用户是否要取消。单击“是”会关闭弹出表单,但也会将Excel发送到以前活动的窗口后面——非常类似于按Alt Tab键。这不好

有人对如何保持Excel的领先地位有什么想法吗

谢谢


Randy

你可以把它放在消息框
ActiveWindow.ActivatePrevious
测试

Debug.Print ActiveWindow.Caption
ActiveWindow.ActivatePrevious
Debug.Print ActiveWindow.Caption

我在ActiveWindow/ActiveView上查找了各种变体,但找不到任何适用的。最后,我绕着桑树丛走了一圈,得出了以下结论:

        IntPtr excelWindow = excelWindow = SpreadsheetApplicationFactoryBase.TheExcelApp.ExcelWin32Window.Handle;
        Win32.SetActiveWindow(excelWindow);
很难看,但很管用。工厂是一个创建/返回Excel实例的小类

我非常感谢你的意见


兰迪

我真的很蠢吗?我没有ActiveWindow,或者至少IntelliSense没有识别一个。或者,这只是你对某个实例的简写吗?Intellisense为我弹出了它。。。也许你可以试试
Application.ActiveWindow
。但这很奇怪。如果我再回到Windows机器上,我会再试一次。是的,刚刚确认。如果我开始输入“activew”,那么ctrl+space就完成了。没有明确地附加到对象。我仍然想知道为什么“是/否”确认框会将整个应用程序发送到后台。这对我来说毫无意义。