2

嗨,我遇到了与此问题类似的问题

对我来说不同的是,我在 WinForms-MainForm 中使用“CreateParams-Method”来强制双缓冲。代码如下(例如DataGridView 绘制错误之后):

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-Usercontrol 中的内容只有在有 mouseover 事件时才会被绘制。

简短描述:用户控件“打开”但它是透明的。在我用鼠标移过它之后,例如 ComboBoxes 被绘制出来。

一旦我注释掉 CreateParams,一切正常(使用 WPF-ElementHost)。是否可以为 WPFElementHost 停用/使用不同的 CreateParams?

4

1 回答 1

0

更改 WPF 控件上的渲染模式对我有用:

private void Control_Loaded(object sender, RoutedEventArgs e)
{
    HwndSource hwndSource = PresentationSource.FromVisual(this) as HwndSource;
    HwndTarget hwndTarget = hwndSource.CompositionTarget;
    hwndTarget.RenderMode = RenderMode.SoftwareOnly;
}
于 2015-06-17T14:22:49.383 回答