簡體   English   中英

當用戶關閉最后一個文檔時,防止終止Word Application

[英]Prevent termination of Word Application when user closes last document

我有一個簡單的Win Forms應用程序,該應用程序由Button控件, OpenFileDialog組件和Microsoft.Office.Interop.Word.Application對象組成:

using System;
using System.Windows.Forms;

namespace WordInterop
{
    public partial class Form1 : Form
    {

        // From Form1.Designer.cs:
        //Button openButton;
        //FileOpenDialog openFileDialog;

        private Microsoft.Office.Interop.Word.Application _wordApp;

        public Form1()
        {
            InitializeComponent();
            _wordApp = new Microsoft.Office.Interop.Word.Application();
        }

        protected override void OnClosed(EventArgs e)
        {
            _wordApp.Quit();
            base.OnClosed(e);
        }

        private void _openButton_Click(object sender, EventArgs e)
        {
            DialogResult result = openFileDialog.ShowDialog();
            if (result == DialogResult.OK) {

                 // Throws COMException if Word app is not longer running
                _wordApp.Documents.Open(openFileDialog.FileName);

                _wordApp.Visible = true;
            }
        }
    }
}

當用戶單擊“ Open按鈕時,他們可以通過OpenFileDialog選擇一個Word文檔。 所選文檔的文件名用於使用Microsoft.Office.Interop.Word.Application對象打開Word文檔。

當用戶關閉最后一個文檔時,似乎Word應用程序終止了:如果用戶單擊“ Open按鈕,選擇一個文檔,關閉該文檔,再單擊“ Open按鈕,然后再次選擇一個文檔,則會出現COMException消息RPC服務器不可用 如果打開了至少一個文檔,則用戶可以打開文檔而不會發生COMException

有沒有一種方法可以防止用戶關閉最后一個文檔時Word應用程序終止?

我嘗試通過將Form1構造函數更改為以下內容來創建隱藏的空白文檔:

public Form1()
{
    InitializeComponent();
    _wordApp = new Microsoft.Office.Interop.Word.Application();
    _wordApp.Documents.Add(Visible: false);
}

但是,當用戶打開文檔時,空白文檔變得可見,這意味着用戶仍然可以終止Word應用程序。

單擊按鈕上,創建一個Microsoft.Office.Interop.Word.Application()的新實例。

  private void _openButton_Click(object sender, EventArgs e)
    {
        DialogResult result = openFileDialog.ShowDialog();
        if (result == DialogResult.OK) {

            _wordApp = new Microsoft.Office.Interop.Word.Application();
            _wordApp.Documents.Open(openFileDialog.FileName);
            _wordApp.Visible = true;
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM