Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WindowsFormDataGridView重叠WPF控件_C#_Wpf_Winforms_Xaml_Datagridview - Fatal编程技术网

C# WindowsFormDataGridView重叠WPF控件

C# WindowsFormDataGridView重叠WPF控件,c#,wpf,winforms,xaml,datagridview,C#,Wpf,Winforms,Xaml,Datagridview,我在使用WinFormHost的WPF应用程序中使用WindowsForm控件,即DataGridView。现在的问题是,DataGridView位于WPF Scrollviewer控件内,因此每当我在DataGridView中有数据并且其高度自动增加时,每当我滚动或过长时,它总是与所有WPF控件重叠。请问我能做什么,我也试过ZIndex,但不起作用。如下图所示 这是WPF托管非WPF可视组件时的一个众所周知的问题。这是由于托管组件接收到一个专用的窗口句柄,该句柄与WPF可视化树分开呈现 以下

我在使用WinFormHost的WPF应用程序中使用WindowsForm控件,即DataGridView。现在的问题是,DataGridView位于WPF Scrollviewer控件内,因此每当我在DataGridView中有数据并且其高度自动增加时,每当我滚动或过长时,它总是与所有WPF控件重叠。请问我能做什么,我也试过ZIndex,但不起作用。如下图所示


这是
WPF
托管非
WPF
可视组件时的一个众所周知的问题。这是由于托管组件接收到一个专用的窗口句柄,该句柄与
WPF
可视化树分开呈现

以下是解决问题的几个选项:

  • 移动到WPF的数据网格如果现在使用
    WinForm
    的数据网格控件有特殊原因,只需移动到
    WPF
    的数据网格控件,即可解决所有问题
  • 可能的解决方法/Hack当用户与滚动条(或
    WPF
    表单上的任何其他相关组件)交互时,可以在
    WPF
    表单中创建一个透明区域,并操纵
    WinForms
    网格。这是丑陋和复杂的,但它可能会工作
  • 使用WinForms的数据网格滚动条而不是依赖
    WPF
    的滚动条,只需让用户与
    WinForms
    数据网格上的滚动条交互即可

  • 非常感谢你的评论,但我已经试过了。我之所以使用WinFormDataGridView,是因为我可以编写代码打印DataGrid中的所有值,并导出到Excel。但是,如果你有一种方法,我可以用WPF DataGrid完成所有这些,请帮我看一下,谢谢。你应该能够使用表示行的
    类,然后用该类的实例填充
    ObservableCollection
    ,并将其绑定到
    DataGrid
    。关于导出到
    Excel
    ,如果您使用的是
    csv
    文件,那么它只是将
    的每个实例的值串联起来并将它们写入一个文件,但是,如果您需要
    xlsx
    文件,然后,您需要使用一个
    office
    API将
    实例导出到
    Excel
    。我可以使用WPF DataGrid,但是您所说的API,我不知道API的内容。如果你能帮我,我会很感激。。。谢谢…您可以查看以下链接以编程方式使用office产品: