在使用Infragistics组件和调整例程时,Winforms应用程序在不同的计算机上显示不同

时间:2011-09-28 13:05:13

标签: winforms compatibility infragistics

我正在使用Winforms开发GUI。大多数测试计算机上的一切看起来都很好(例如,UI以相同的方式显示,因此显示在开发GUI的电脑上)。但是,在一台笔记本电脑上,有几个元素无法正确显示(尺寸错误或重绘问题)。

我用完了测试来弄清楚我们可能出错了什么;所有计算机都以各种屏幕分辨率运行Windows 7。

我正在使用Infragistics组件来构建UI。有什么想法吗?

编辑:一些例子。在“损坏的”笔记本电脑上,一些选项卡(UltraWinTab的一部分)无效,并且在最小化/恢复命令后不重绘,您只获得选项卡的背景但没有组件。

其他一些控件是以更小的尺寸莫名其妙地绘制的(而不是填充区域,我得到大的空底和右边的乐队)。

1 个答案:

答案 0 :(得分:5)

我们也遇到过这个问题。带有Infragistics控件的Windows.Forms应用程序在Windows XP上看起来很不错,但在W7上,各种调整大小问题开始出现。我花了很长时间才发现发生了什么。

当然,首先我认为它与Infragistics有关,但我在任何论坛上都找不到任何线索。最后我偶然发现this link,在那里解释说,除了某个控件的嵌套层次结构之外,不再触发调整大小的事件。

我们有一个UI框架,对于我们来说,使用这个覆盖来创建System.Windows.Forms.SplitContainer的衍生物就足够了:

// HACK: under Windows7, controls do not always redraw to their whole rectangle after restoring their size.
protected override void OnSizeChanged(EventArgs e)
{
    if (Handle != null) // Can be null because the event is invoked before the handle is created.
        BeginInvoke((MethodInvoker)(() => base.OnSizeChanged(e)));
}

因为我们在SplitContainers上有Infragistics控件(网格,停靠管理器)。也许Infragistics控件具有较深的嵌套级别,使其比其他控件更快发生。