1. 程式人生 > >在WPF中使用WindowsFormsHost帶來的問題及解決方案

在WPF中使用WindowsFormsHost帶來的問題及解決方案

首先明確指出的是你要解決的問題沒有可行的解決方案,然後你還有興趣的話,可以繼續往下看。

繼續往下看的程式設計師都是好程式設計師!!!

本人開發環境:VS2013 && .NET 4.5.1

問題:在wpf中嵌入WindowsFormsHost後,WINFORM的元素都在最頂層,所以要在TABCONTROL中切來切去的時候,會發現不管咋切winform的元素都處於顯示狀態,就算當你想用SCROLLVIEWER包一下,對不起,當你使用滾動條的時候,winform元素甚至連你的滾動條都 遮擋了。

對於此問題,無解!無解!無解!

首先看一下MS的說法:

According to
MSDN (Layout Considerations for the WindowsFormsHost Element) A hosted Windows Forms control is drawn in a separate HWND, so it is always drawn on top of WPF elements. This is a design limitation

意思就是說,WINFORM元素一直都在最頂層,這是設計的限制。
一直到.NET FRAMEWORK 4.0時候都是這個狀況。

再看看MS對這個問題的嘗試

A year later, things have changed a bit with
.NET 4.5. For those who stumbled upon this, much as I did, here is a more updated excerpt from Walkthrough: Arranging Windows Forms Controls in WPF on MSDN: By default, visible WindowsFormsHost elements are always drawn on top of other WPF elements, and they are unaffected by z-order. To enable z-ordering, set
the IsRedirected property of the WindowsFormsHost to true and the CompositionMode property to Full or OutputOnly.
All you need to do, when using .NET 4.5, is add the following attributes to your WindowsFormsHost element IsRedirected="True" and CompositionMode="Full" or CompositionMode="OutputOnly".

在.net 4.5,微軟嘗試解決這個問題,就是新增幾個屬性的事。這是個大坑,也不知道到底解決的如何,此功能僅限於4.5 BETA版,在正式版裡,又沒有這兩個屬性了。
(微軟自己都解決不了的問題,真尷尬!!!)

再看看MS的新說法

1.3.10 Windows Presentation Foundation (WPF) 1.3.10.1 HwndHost feature has been removed from WPF in the .NET Framework 4.5 Beta The .NET Framework 4.5 Developer Preview included a WPF HwndHost redirection feature. However, this feature had several known issues and has been removed from the .NET Framework 4.5 Beta. It will not be included in any future releases. To resolve this issue: No workaround is available.

意思是說:
1.3.10WindowsPresentationFoundation(WPF)1.3.10.1HwndHost特性已被刪除從WPF。淨框架4.5Beta。淨框架4.5開發人員預覽版包括一個WPFHwndHost重定向功能。然而,這個功能有幾個已知問題和已被刪除。淨框架4.5Beta。它將不會被包括在任何未來的版本。解決這一問題:沒有可用的解決方法

總之就是無解,無解,無解!!!

以下是一些連結,也是說的相同問題

相關推薦

Android開發常見問題解決方案

1、介面對接中的關鍵字解析 在日常介面對接中,經常會出現介面返回的資料節點是java中的關鍵字(類似介面返回 extends 節點),會導致解析異常。針對這種情況有以下的解決方案:1、fastjson 解析的情況下可以使用以下註解如:public class DataBean

工作Hadoop,Spark,Phoenix,Impala 集群遇到坑解決方案

文件數量 無法使用 base inux 設置 topology 報錯 的人 源碼 1.HDFS 修復 問題描述:其他部門在yarn平臺上跑spark 程序錯誤的生成了海量的不到100K的小文件,導致namenode壓力過大,其中一個namenode宕機後,沒有

移動開發一些bug解決方案

網頁開發要面對各種各樣的瀏覽器,讓人很頭疼,而移動開發中,你不但要面對瀏覽器,還要面對各種版本的手機,ios好一點,而安卓就五花八門了,你可能在開發中也被它們折磨過,或者正在被它們折磨,我在這裡說幾個我在開發中遇到的比較難纏問題,和解決方案,給其他朋友提個醒,因為一旦碰到了這

JDBC---Javaweb過程的問題解決方案

為資料庫表user插入資料時(id列為自增長型整數):錯誤丟擲(僅當使用了列列表並且 IDENTITY_INSERT 為 ON 時,才能為表'users'中的標識列指定顯式值。) 執行以下SQL語句: --先開啟IDENTITY_INSERT set I

APP開發的問題解決方案(持續更新

一,使自己建立的Activity無TitleBar:    情況:    當自己建立的Activity繼承AppCompatActivity時,在setContentView方法之前呼叫    requestWindowFeature(Window.FEATURE_NO_TI

Winform開發的困境解決方案

在我們開發各種應用的時候,都會碰到很多不同的問題,這些問題涉及架構、模組組合、介面處理、共同部分抽象等方面,我們這裡以Winform開發為例,從系統模組化、介面元件選擇、業務模組場景劃分、介面基類和輔助類處理、程式碼生成工具輔助開發等方面介紹在實際專案開發過程中碰到的困境和相關的解決方案,以便分析其中是如何逐

WPF使用WindowsFormsHost帶來的問題解決方案

首先明確指出的是你要解決的問題沒有可行的解決方案,然後你還有興趣的話,可以繼續往下看。 繼續往下看的程式設計師都是好程式設計師!!! 本人開發環境:VS2013 && .NET 4.5.1 問題:在wpf中嵌入WindowsFormsHo

Html map 實際使用遇到的問題解決方案

矩形選框 比例 lan fun 分開 寫法 解決方案 介紹 rds 前言:百度了一下html map,嗯嗯,介紹的挺詳細的,如果是初學者,直接看他們的教程,挺好的,就不用我再多說了。 不過我發現一個問題,就是都是介紹map有什麽屬性怎麽用的,這明顯就是照搬文檔自己再改一下嘛

配置BGP 過程最容易出現的問題。解決方案

解決方法 在配置過程中最容易出現的問題! 往往是很簡單、很容易的問題,我們大家常常會忽略, 在配置過程中容易把配置中 peer 192.168.34.4 as-number 64513 配置成65413。 解決方案:在R3或R4中開啟debugging

2018平安產險數據建模大賽 駕駛行為預測駕駛風險遇到的問題解決方案

機器學習1、數據需要清洗註意在讀取csv格式文件之後需要對空值進行補全類似如下代碼:2、特征工程此處選取以下幾個指標作為分類和回歸的特征3、深度模型失效通過日誌發現 正樣本即Y>0的樣本所占比例在14%左右,深度分類模型可能將所有的數據分為Y=0導致沒有數據進行回歸 所以此處采用傳統方法 使用SVM 方

Prometheus配置過程出現的bug解決方案

一、簡介 Node exporter,Promenade和Alertmanager在安裝配置後,在除錯Prometheus執行中出現了不少bug,針對這些bug進行了解決。本部落格主要蒐集總結這些bug和解決方案,進行記錄。 Prometheus執行命令參考如下: docker ru

ZigBee開發遇到的問題解決方案

在學習zigbee的過程中,最重要的問題就是一開始對於一些陌生名詞的恐懼,學習新東西的過程中總會涉及到一些專業性比較強的東西,由於之前沒有接觸過,所以到導致一遇到陌生的名次就會很害怕,這裡總結的經驗就是多看幾遍就好了,任何東西都是可以學會的,尤其是學理的,應該秉承的世界上所有問題都是可以解決的,只要

製作網路爬蟲遇到的諸多問題解決方案

def getsourse(self,url): html=requests.get(url) html.encoding='utf-8' return html.text 關於html檔案轉text格式因為uft-8而出現亂碼的問

關於vue 使用 webuploader 遇到的坑解決方案,本文以分片上傳為例解說,上傳壓縮包大小為2G左右在專案實測

首先說一下vue中使用webuploader該如何引入呼叫   1. 肯定是安裝操作, 本人用的是淘寶映象 cnpm i webuploader -S  如果你沒有安裝淘寶映象,則使用 npm i webuploader -S   2. 引入操作,在具體的vue元件中引入 , import We

在SSH框架,多個持久層物件相互引用,從而引發分頁查詢,查詢所得的持久化物件轉換為JSON字串報錯的原因解決方案

引言: 使用EasyUI框架的小夥伴們都知道,在使用datagrid(資料表格)時,會傳入如一個URL,用於請求資料表格中的所顯示的資料: <!--建立一個空表格--> <table id="mytable"></table>

配置solr過程遇到的問題解決方案

1.由於缺少solr原始檔報錯 解決方法是把solr原始檔包裡面的資料夾contrib和dist複製到solrhome裡的core的conf目錄下就行了。 我的命令:  進入solr軟體的根目錄  (這個solr目錄不是tomcat裡的solr目錄,我的目錄為 /h

將資料庫的資料轉換為excel檔案下載到本地的方法遇到的困難解決方案

以下是將資料庫的資料轉換為excel檔案下載到本地的方法 @Autowired private BooksService booksService; @RequestMapping("/downloadBooksExcel") public void down

基於SPM的腦影象處理軟體REST使用過程出現的問題解決方案

報錯 Eror using rest_progress(line 29) Input arguments of type matlab. ui. Figure not valid. 解決辦法: 在MATLAB中刪除路徑,並重新set path 把REST的路徑放

python——使用ddt過程遇到的問題解決方案

前言:   在使用DDT資料驅動+HTMLTestRunner輸出測試報告時遇到過2個問題:   1、生成的測試報告中,用例名稱後有dict() -> new empty dictionary        2、使用ddt生成的用例名稱無法更改 1、用例名稱後有dict() -> new empt

Python:使用ddt過程遇到的問題解決方案

前言: 在使用DDT資料驅動+HTMLTestRunner輸出測試報告時遇到過2個問題: 1、生成的測試報告中,用例名稱後有dict() -> new empty dictionary 2、使用ddt生成的用例名稱無法更改 1、用例名稱後有dict() ->