【发布时间】:2012-10-09 14:12:46
【问题描述】:
您好,我遇到了与 Question 类似的问题。
对我来说不同的是,我在 WinForms-MainForm 中使用“CreateParams-Method”来强制双缓冲。代码如下(例如DataGridView draws wrong):
protected override CreateParams CreateParams
{
get
{
// Activate double buffering at the form level. All child controls will be double buffered as well.
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x02000000; // WS_EX_COMPOSITED
return cp;
}
}
我现在的问题是,只要激活了这个 CreateParams,我的 WPF-ElementHost 在 WinForms-User 控件中的内容只有在有 mouseover 事件时才会被绘制。
简短描述:用户控件“打开”但它是透明的。在我用鼠标移动它之后,例如组合框被绘制。
只要我注释掉 CreateParams,一切都会正常工作(使用 WPF-ElementHost)。是否可以为 WPFElementHost 停用/使用不同的 CreateParams?
【问题讨论】:
-
你解决过这个问题吗?我遇到了同样的问题。
-
@TormodFjeldskår:Nej。我从来没有找到解决这个问题的方法。我刚刚注释掉了整个应用程序的 CreateParams-Section。你有吗?
-
不,很遗憾没有。从表单中删除了 CreateParams 代码,并将其添加到仅那些不承载 WPF 控件的屏幕中。
标签: wpf winforms double-buffering