我有一個簡單贏窗體應用程序,它由一個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應用程序的空白文檔變得可見。
爲什麼不直接將'_wordApp = new Microsoft.Office.Interop.Word.Application();'添加到'_openButton_Click'? – waka 2014-11-21 15:13:53