2

我在. UserControl_ DataGrid_ _ 当我显示该表单并尝试将其呈现到 GUI 时,我收到以下错误UserControlWinFormElementHost

UIElement.Measure(availableSize) cannot be called with NaN size

我已经检查过,所有 Size 对象都不是 null 或有意外的值。

让我感到困惑的是,如果我MessageBox在调用之前显示正确,那么表单会完美呈现。在我的 Win8 电脑而不是 Win7 服务器上进行测试时,同样的UserControl也可以完美地呈现在不同的环境中,并且可以完美地工作,任何想法都将不胜感激!WinForm

谢谢。

4

1 回答 1

0

“availableSize”如何设置?你从哪里得到这个价值?当你没有为某个东西指定一个大小,比如宽度,然后获取宽度的值,你将返回 'nan'。所以如果你正在做类似的事情

double availableSize = someControl.Width;  

它将设置availableSize 为'double.nan'。因为它不是一个真正的价值。它并没有真正设置。它不为空,但尚未设置为任何值。这样,在给定正确的上下文的情况下,控件可以自动调整到其容器。

无论如何,如果availableSize == nan你试图打电话:

UIElement.Measure(availableSize) 你会得到你看到的那个 NaN 异常。

希望这可以为您解决问题。您可以在使用它之前检查它是否为 NaN。

if(availableSize != double.Nan)
{
   measurement = UIElement.Measure(availableSize);
}
于 2013-07-30T14:15:46.710 回答