1. 程式人生 > >C#下WPF中呼叫WinForm控制元件

C#下WPF中呼叫WinForm控制元件

最近在C#下呼叫NPlot生成股票K線圖,由於用的WPF框架,而NPlot是基於WinForm開發的。所以不能直接引用。具體做法如下:   NPlot原始碼Microsoft .NET Framework 4.5版 1、引入DLL 建立工程後需要引入WindowsFormsIntegration.dll和System.Windows.Forms.dll兩個Dll。WindowsFormsIntegration.dll負責整合WPF和Windows。 2、在xaml中新增名稱空間標籤 xmlns:WinFormIntegration="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration"
3、新增宿主容器 <WinFormIntegration:WindowsFormsHost x:Name="winFormsHost" Grid.Row="1" Width="Auto" Grid.ColumnSpan="2"> <!--在此新增WinForm控制元件--> </WinFormIntegration:WindowsFormsHost> 本例完整的xaml檔案: <Window x:Class="AxyDeal.MainWindow" Title="MainWindow" Height="600" Width="1080" xmlns
:local="clr-namespace:AxyDeal.comcontrol" xmlns:WinFormIntegration="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration" > <Grid> <DockPanel> <Menu DockPanel.Dock="Top"> <MenuItem Header="檔案"> <MenuItem Header="開啟"> <
MenuItem Header="1.txt"></MenuItem> <MenuItem Header="2.txt"></MenuItem> <MenuItem Header="3.txt"></MenuItem> </MenuItem> <MenuItem Header="退出" Name="miExit" Click="miExit_Click"></MenuItem> </MenuItem> <MenuItem Header="編輯"> <MenuItem Header="複製"></MenuItem> <MenuItem Header="貼上"></MenuItem> </MenuItem> </Menu> <ToolBar DockPanel.Dock="Top" Height="40"> <Button> <Image Source="images/logo_email.png"></Image> </Button> <Button> <Image Source="images/logo_dropbox.png"></Image> </Button> <Button> <Image Source="images/logo_evernote.png"></Image> </Button> </ToolBar> <TabControl DockPanel.Dock="Left" > <TabItem Header="TabItem"> <Grid Background="#FFE5E5E5"/> </TabItem> <TabItem Header="TabItem"> <Grid Background="#FFE5E5E5"/> </TabItem> </TabControl> <Grid Height="Auto" Width="Auto" Background="AliceBlue"> <Grid.RowDefinitions> <RowDefinition Height="Auto"></RowDefinition> <RowDefinition></RowDefinition> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition></ColumnDefinition> <ColumnDefinition></ColumnDefinition> </Grid.ColumnDefinitions> <local:TickerControl x:Name="tickerControl" Grid.Row="0" Height="50" Grid.ColumnSpan="2" Grid.RowSpan="1" Width="686" VerticalAlignment="Top" HorizontalAlignment="Center" Visibility="Visible" Margin="1,0,0,0" ></local:TickerControl> <WinFormIntegration:WindowsFormsHost x:Name="winFormsHost" Grid.Row="1" Width="Auto" Grid.ColumnSpan="2"> <!--在此新增WinForm控制元件--> </WinFormIntegration:WindowsFormsHost> </Grid> </DockPanel> </Grid> </Window> 4、在程式碼中引入WinForm控制元件 這裡聲明瞭兩個要引入的變數 //Form例項 private Form kLineForm = new Form(); //要引入的NPlot控制元件 private NPlot.Windows.PlotSurface2D KLinePS; 然後在MainWindow方法中新增: //把Form新增的xaml中建立的宿主容器 this.winFormsHost.Child = this.kLineForm; KLinePS = new NPlot.Windows.PlotSurface2D(); //把NPlot控制元件新增的Form中 this.kLineForm.Controls.Add(this.KLinePS); 至此可以在WPF中任意使用NPlot了。 使用NPlot是一款免費又開源.Net平臺下的圖表控制元件,能做各種曲線圖,柱狀圖,餅圖,散點圖,股票圖等。

相關推薦

C#WPF呼叫WinForm控制元件

最近在C#下呼叫NPlot生成股票K線圖,由於用的WPF框架,而NPlot是基於WinForm開發的。所以不能直接引用。具體做法如下:   NPlot原始碼Microsoft .NET Framewo

WPF使用winform控制元件WebBrowser

為了使用Winform控制元件中的WebBrowser,而WPF窗體不能直接執行WinForm控制元件,然後在WPF窗體上新增WindowsFormsHost控制元件,此WindowsFormsHost控制元件可作為Win From控制元件執行的容器。 1、首先,我們需要向

WPF新增WINFORM控制元件的方法

在wpf程式中新增window的程式集引用:System.Windows.Forms.dll和WindowsFormsIntegration.dll xmlns:wfi="clr-namespace:System.Windows.Forms.Integration;as

WPF嵌入winform控制元件

   最近想整理一下WPF中嵌入winform控制元件的相關內容。我認為可分幾步走:   第一步:在專案中新增System.Windows.Forms 和 WindowsFormsIntegration這兩個dll的引用。   第二步:在xaml檔案中新增System.Wi

WPF使用WinForm控制元件方法

下面以在Wpf中新增ZedGraph(用於建立任意資料的二維線型、條型、餅型圖表的一個開源類庫)控制元件,說明在WPF中使用Winform控制元件的方法。 1、首先新增對如下兩個dll檔案的引用:WindowsFormsIntegration.dll,System.Windo

WPF使用Winform控制元件

在專案中遇到使用WPF做上位機,引用Winform控制元件,特此做一下總結: 1、在設計介面新增: xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms" xmlns:wfi

WPF視窗使用WinForm控制元件的一些限制

在wpf中使用WinForm的控制元件有時候倒是很方便,特別是要使用ActiveX控制元件的時候必須把它封裝成WinForm的控制元件才能使用,但使用的時候有諸多限制。這兩天想在WPF視窗中使用一下WinForm的WebBrowser控制元件,但是一設定AllowsTrans

C#多執行緒訪問winform控制元件

方法一:System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;  不推薦使用這種方式,禁止編譯器對跨執行緒訪問做檢查的方式實現。 方法二:使用delegate和invoke private

WindowsXamlHost:在 WPF 使用 UWP 控制元件控制元件

原文 WindowsXamlHost:在 WPF 中使用 UWP 控制元件庫中的控制元件 在 WindowsXamlHost:在 WPF 中使用 UWP 的控制元件(Windows Community Toolkit) 一文中,我們說到了在 WPF 中引入簡單的 UWP 控制元件以及相關

WPF使用瀏覽器控制元件WebBrowser

設定使用IE的版本 public static class Extensions { #region 設定WebBroswer 使用IE版本 public static void SetWebBrowserFeatures(int i

C#跨執行緒訪問winform控制元件的方法

方法一:System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;  不推薦使用這種方式,禁止編譯器對跨執行緒訪問做檢查的方式實現。   方法二:使用delegate和invoke

WebKit開發實戰(一):在WPF使用WebKit控制元件(含示例程式碼)

WebKit 是一個開源的瀏覽器引擎,可以用於程式內建瀏覽器的開發。開發時,需要將WebKit的相關檔案都拷貝至專案檔案,方便程式設計時呼叫,實現WebKit的功能。 在WPF中使用WebKit時,需要新增以下引用。 新增好引用後,就可以在WPF中使用WebKit控

C# 執行緒更新介面控制元件

在我們開發軟體時經常會需要跟新介面上的某個控制元件來顯示相關的資訊。 當我們的介面需要在程式執行中不斷更新資料時,當一個textbox的資料需要變化時,為了讓程式執行中不出現介面卡死的現像,最好的方法就是多執行緒來解決一個主執行緒來建立介面,使用一個子執行緒來執行程式並更新

WPF查詢子控制元件、父控制元件的方法

  /// <summary> /// 查詢指定型別的子控制元件 /// </summary> /// <typeparam name="childItem">子控制元件型別&l

C# 跨執行緒呼叫窗體控制元件

//定義委託 delegate void MyInvoke(string s); //呼叫方法 private void SetText(string s) {

C# WinForm新增使用者控制元件

轉:https://blog.csdn.net/haelang/article/details/40681003 有的時候我們需要頻繁使用一些系統預設工具的組合,那麼就可以使用自定義使用者控制元件。   起一個合適的名字後,就可以在解決方案資源管理器中看到剛才建的:   然後雙擊

Winform控制元件WPF使用的注意事項

從Winform轉到WPF的時候,經常需要在WPF裡面採用一些以前用Winform寫過的控制元件。下面介紹在WPF中使用Winform的方法和注意事項。 1、在WPF中使用Winform的控制元件 (1)新增必須的dll。主要有:WindowsFormsIntegration.dll,Sys

獲取iframe的內容、查詢獲取指定元素(關於用c++呼叫WEBBROWSER控制元件,使用相關介面操作web頁面元素的一些方法)

最近開發WINDOWS下的應用程式,需要用到C++中呼叫WEBBROWSER控制元件操作網頁的相關技術,查閱了一下相關文件,反覆除錯了幾天,對其中的技術有了一些膚淺的認識,大多數C++程式設計師對COM應該不陌生,其實用C++操作網頁,在前端應用層上主要就是對COM介面的查

C#Winform控制元件扁平化設計

導語:在用Visual Studio進行WinForm窗體程式設計時,系統提供的窗體和其他公共控制元件看起來比較難看,隨著設計風格以及人們審美的轉變,使用者更喜歡如下圖所示扁平化設計風格。可以通過兩種方

C#基礎之 二十二 C#窗體常用的控制元件

前言       第一次看這部分的視訊的時候,我就有一個非常深的感觸,當時看到這些控制元件的名稱和“長相”之後,覺得和VB真的是如出一轍,沒有什麼不一樣的,只不過這一個是C#,以前接觸的是VB,這樣的話應該還是比較容易接受的