none
WPF调用WinForm是出现的虚框问题 RRS feed

  • 问题

  • wpf调用winform的API的时候,就会出现虚框,系统调用MessageBox.Show()的也会出现此类的问题(统一改成this.MessageBoxShow()方法,我们自己封装的控件。


    2013年11月15日 9:10

答案

  • 您好!

    我在本机创建了一个普通的WPF工程,里面通过WindowsFormsHost来承载WinForm的控件,我在Win8 Pro环境下测试了下,是没有虚框的。请参考以下代码:

    XAML:

    <Grid Name="grid1">
    
    </Grid>

    C#:

    private void Window_Loaded(object sender, RoutedEventArgs e) 
    {
        // Create the interop host control.
        System.Windows.Forms.Integration.WindowsFormsHost host =
            new System.Windows.Forms.Integration.WindowsFormsHost();
    
        // Create the MaskedTextBox control.
        MaskedTextBox mtbDate = new MaskedTextBox("00/00/0000");
    
        // Assign the MaskedTextBox control as the host control's child.
        host.Child = mtbDate;
    
        // Add the interop host control to the Grid 
        // control's collection of child controls. 
        this.grid1.Children.Add(host);
    }

    你可以在本机运行下效果,对比一下。

    具体信息可以参考http://msdn.microsoft.com/en-us/library/ms751761(v=vs.110).aspx

    其中我遇到过一种产生虚线的情况是这样的,在Win7 Aero 效果下出现的,这种情况是系统主题原因所产生的,我们可以将产生虚线的容器的Border 宽度设置为0,这样就不会产生这样的效果了。

    对于MessageBox.Show(),这个情况出现虚线是和系统主题有很大关系的。如果是Win7 Aero下过,建议您将主题调节为Classic主题。这样可以避免这个问题。

    如果上述回复不能帮您修复这个问题,建议您提供一些关键代码让我重现下现象,包括您的开发平台(操作系统版本,.NET 版本,VS版本)这样更有利于问题的解决。

    谢谢!


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2013年11月18日 2:11
    版主