以下代码取自 70-536 Microsoft .NET 考试的测量测试。
private void frmMain_Paint(object sender, PaintEventArgs e)
{
System.ComponentModel.TypeConverter rectConverter =
System.ComponentModel.TypeDescriptor.GetConverter(typeof(Rectangle));
Rectangle rect = (Rectangle)rectConverter.ConvertFromString("50,50,200,200"); //fails
e.Graphics.DrawRectangle(Pens.Black, rect);
rect.Inflate(-10, -10);
e.Graphics.DrawRectangle(Pens.Blue, rect);
}
但是线
Rectangle rect = (Rectangle)rectConverter.ConvertFromString("50,50,200,200");
失败,“50,50,200,200”不是 Int32 的有效值”。我根本不熟悉 TypeConverter 类。但根据解释,这应该在坐标 (50,50) 处绘制一个黑色矩形大小(200,200)。然后使用 Inflate 方法在黑色矩形内绘制一个新的较小的蓝色矩形。但是为什么 ConvertFromString 失败?
编辑:
我猜这是关于 Rectangle 类的 ConvertFromString 方法的 .NET 实现: