确保 Winform 控件位于 WPF 控件内的 WindowsFormsHost 边界内

Ensuring Winform control stays within boundary of WindowsFormsHost inside WPF control

我有一个 Winform 控件,在 Windowsformshost 中,在 WPF 选项卡控件中(在 WPF window 中)。

根据 Winform 控件正在绘制的内容,有时它会超出 WindowsFormsHost 的范围,从而切断一些图像。

有什么方法可以确保控件保持在边界内,或者 redraws/scales 图像保持在边界内?

编辑:我实际上能够解决这个问题。在我将 Winform 控件复制到 WindowsFormsHost 之前,我做了:

                this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
                this.PerformAutoScale();

整组图像自行缩放以保持在主机控制范围内。

编辑 2:看起来 this.PerformAutoScale(); 不是必需的。只需设置 AutoScaleMode 即可。

我已经成功地使用了几种不同的形式。以下选项对我都有效,以确保窗体中的所有 Winform 控件都显示在 WindowsFormsHost 的范围内:

this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;

this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;

有时(取决于控件包含的内容)

this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;

除了简单地设置 AutoScaleMode 之外,没有必要调用任何其他大小调整 functions/methods。