我開發一個桌面應用程序(C#4.0的WinForms),其中的一個要求是,該方案可以打開一次以上。但是,我不希望用戶能夠多次打開一個給定的文檔(壞事情可能會發生)。打開文件僅一次的程序(如微軟Word)在C#4.0的Winform
基本上我希望它的功能類似於MS Word(至少是新版本),如果你試圖打開一個已經打開的文檔,它將把你帶到已經打開該文檔的程序的實例。
我花了我大部分時間做網站開發,所以可能有一些簡單的解決方案,我只是不知道。
所以我真的有兩個不同的需求。
1)保持打開文件不止一次 2)如果他們試圖再次打開它,請將實例放在前面。
有一對夫婦的我能想到的處理#1的方式,但我很好奇的人們是如何解決等這個問題。
我實際上並不知道從哪裏開始嘗試讓#2工作,而無需使某些主窗體/進程保持打開狀態並創建子程序。 IE創建另一個實際控制當前程序主窗體的打開和關閉的窗體,因此它比實際的多窗體驗更像是「標籤」體驗。更像是一個老式的MDI(它仍然會留下問題#1)。
任何幫助在這裏(網站閱讀,名稱空間看,等...)將不勝感激。
編輯 -我看到這已被標記爲重複,並且「重複」位於頁面頂部。我的一個要求是,該程序必須能夠多次打開。你們甚至讀過這篇文章嗎?有人可以進來投票重新提出這個問題嗎?
進一步編輯 -我去與互斥想法保持程序從多次打開同一個文檔。我從來沒有找到一個簡單的方法來找出程序的哪個實例將文檔打開並將它放在前面,所以我現在放棄了,只是彈出一個消息框告訴它它已經打開。命名管道似乎有點矯枉過正,因爲它不完全是我想要做的,並且會涉及很多開銷(並且WCF並不是世界上最簡單的東西),所以需要進一步的幫助。
@HansPassant,我不認爲這是關於「如何創建單實例應用程序」的問題 - 「程序可以打開多個時間「,對我而言,由於某種原因,EXE的多個實例必須同時運行。 –
Word是一個具有OP描述的所有行爲的單實例應用程序。不知道你在說什麼。 –
閱讀Word如何通過使用[運行對象表](http://msdn.microsoft.com/zh-cn/library/aa911889.aspx)來實際執行它可能很有趣/有教育意義。有一些問題談論從C#中使用它,像 - http://stackoverflow.com/questions/8215203/problems-accessing-the-running-object-table。據我所知,沒有內置的C#/ CLR使用方法,它也是很早以前設計的,以解決這個問題。 –