【问题标题】:WindowsForm DataGridView Overlapping WPF ControlsWindows 窗体 DataGridView 重叠 WPF 控件
【发布时间】:2017-01-05 12:49:36
【问题描述】:

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

【问题讨论】:

    标签: c# wpf winforms xaml datagridview


    【解决方案1】:

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

    这里有几个选项可以解决您的问题:

    1. 移至 WPF 的数据网格 如果现在有特殊原因需要使用 WinForm 的数据网格控件,只需移至 WPF 的那个,它会解决您的所有问题。
    2. 可能的解决方法/Hack 当用户与滚动条(或@987654329 上的任何其他相关组件)交互时,可以在WPF 表单中创建一个透明区域并操纵WinForms 网格@ 形式)。它既丑陋又复杂,但它可能会奏效。
    3. 使用 WinForms 的数据网格滚动条,而不是依赖 WPF 的滚动条,只需让用户与 WinForms 数据网格上的滚动条进行交互。

    【讨论】:

    • 非常感谢您的评论,但我已经尝试了所有这些。我使用 WinForm DataGridView 的原因是因为我可以编写代码来打印 DataGrid 中的所有值并导出到 Excel。但是,如果您有办法让我使用 WPF DataGrid 完成所有这些操作,请帮我完成,谢谢。
    • 您应该能够使用代表一行的class,然后用该类的实例填充ObservableCollection,并将其绑定到DataGrid。关于导出到Excel,如果您使用csv 文件,那么它只是连接class 的每个实例的值并将它们写入文件,但是,如果您需要xlsx 文件,则您需要使用office API 之一将class 实例导出到Excel
    • 我可以使用 WPF DataGrid,但是你所说的 API,我不知道那些 API 的东西。如果您能帮助我,我将不胜感激...谢谢...
    • 您可以查看以下链接以编程方式使用办公产品:msdn.microsoft.com/en-us/library/bb448854(v=office.15).aspx
    猜你喜欢
    • 2011-06-04
    • 2011-03-11
    • 2011-06-30
    • 1970-01-01
    • 1970-01-01
    • 2012-11-22
    • 1970-01-01
    • 2020-10-12
    相关资源
    最近更新 更多