wpf 單列表 使用 WPF 建立單例項應用程式

2021-10-13 04:16:14 字數 1848 閱讀 7000

乙個簡單的例子就是大家在使用很多應用程式,例如在使用microsoft word 時會遇到一種情況,不管你開啟多少個文件,系統一次只能載入乙個winword.exe 例項。當開啟新文件時,文件在新視窗顯示,但是始終只有乙個應用程式控制所有文件視窗;如:可以提供平鋪當前所有文件中相鄰視窗的文件的特性。

wpf團隊推薦我們一種最簡單的方法就是:使用windows  窗體提供的內建支援,該內建支援最初是用於visualbasic 應用程式的,使用window窗體和visualbasic 的這一特新來開發基於c#的wpf程式會存在乙個新舊應用程式之分,本質上舊式應用程式充當了wpf應用程式的封裝器。流程是:當啟動程式時將建立舊式應用程式,舊式應用程式接著建立wpf應用程式,舊式應用程式處理例項管理,而wpf應用程式處理正真的應用。

下面我們通過乙個例項來演示建立單例項應用程式的具體步驟:

一.建立wpf窗體專案,並新增microsoft.visualbasic.dll 引用。

二.首先建立乙個document.xaml,和 documentlist.xaml 視窗檔案,使用定義的類documentreference 表示對document引用。

documentreference :

1 public classdocumentreference2 7 set 8 }9

10 private stringname;11 public stringname12 14 set 15 }16

17 public documentreference(document document, stringname)18 22 }

view code

document.loadfile() 通過檔名讀取文件內容,document.onclosed() 事件在文件窗體關閉時觸發,用於從動態集合移除例項。

public partial classdocument : window

public voidloadfile(documentreference docref)

protected override voidonclosed(eventargs e)

8 set 9 }10

16 documentlist list = newdocumentlist();17 this.mainwindow =list;18 list.show();19

20 //load the document that was specified as an argument.

21 if (e.args.length > 0) showdocument(e.args[0]);22

23 }24

25 public void showdocument(stringfilename)26 37 catch

38 41 }42 }

view code

issingleinstance 用於確定此應用程式是否為單例項應用程式,在建構函式中設定值為true。

重寫 onstartup(),程式啟動時,重寫該方法並建立wpf應用程式物件。

重寫 onstartupnextinstance(),當另乙個應用程式啟動時觸發該方法,該方法提供了訪問命令列的引數的功能。此時可以呼叫wpf應用程式類的方法來建立視窗,但不能建立另乙個應用程式物件。

15 //return base.onstartup(eventargs);

21 protected override voidonstartupnextinstance(startupnextinstanceeventargs eventargs)22 {23

view code

public class startup

[stathread]

public static void main(string args)

wpf 單列表 WPF 應用程式單例模式

wpf程式如何只允許開啟乙個視窗,當視窗存在時,啟用視窗。步驟 2 新增引用 system.runtime.remoting 如下 stathread public static void main if singleinstance.initializeasfirstinstance unique...

WPF 迴圈顯示列表

原文 wpf 迴圈顯示列表 專案需要類似手機上設定時間的控制項,可以一直滾動顯示的內容連續的。在wpf中找到的列表控制項只能滾到最後再反向滾動。基於scrollviewer和stackpanel來改造,xaml如下 height path itemheight grid.rowdefinitions...

WPF 迴圈顯示列表

原文 wpf 迴圈顯示列表 專案需要類似手機上設定時間的控制項,可以一直滾動顯示的內容連續的。在wpf中找到的列表控制項只能滾到最後再反向滾動。基於scrollviewer和stackpanel來改造,xaml如下 height path itemheight grid.rowdefinitions...