C#将字符串转换为Microsoft.Office.Core.MsoAutoShapeType
我是C#新手,我正在尝试从JSON文件接收的给定字符串在PowerPoint中创建一个形状 这是在string[]arr\u shape和new\u幻灯片中作为PowerPoint幻灯片运行良好的初始代码:C#将字符串转换为Microsoft.Office.Core.MsoAutoShapeType,c#,vsto,C#,Vsto,我是C#新手,我正在尝试从JSON文件接收的给定字符串在PowerPoint中创建一个形状 这是在string[]arr\u shape和new\u幻灯片中作为PowerPoint幻灯片运行良好的初始代码: var shape_width = float.Parse(arr_shape[1]); var shape_postion_top = float.Parse(arr_shape[2]); var shape_position_left = float.Parse(arr_shape[3]
var shape_width = float.Parse(arr_shape[1]);
var shape_postion_top = float.Parse(arr_shape[2]);
var shape_position_left = float.Parse(arr_shape[3]);
var shape_position_height = float.Parse(arr_shape[4]);
PowerPoint.Shape shape = new_slide.Shapes.AddShape(Office.MsoAutoShapeType.msoShapeRectangle, shape_position_left, shape_postion_top, shape_width, shape_position_height);
因此,现在我一直在尝试从string arr_shape[5]动态设置形状类型,该类型可以包含
我检查了一些解决方案,如和。我假设解决方案可能是这样的:
Type shape_type = Type.GetType("Microsoft.Office.MsoAutoShapeType."+ arr_shape[5]);
PowerPoint.Shape shape = new_slide.Shapes.AddShape(shape_type, shape_position_left, shape_postion_top, shape_width, shape_position_height);
但它给了我一个错误:
无法从“System.Type”转换为
'Microsoft.Office.Core.MSOAutosapeType'
我非常感谢您的帮助,因为我已经坚持了一个多星期了…所以我解决了这个问题,感谢您在评论中的指导。我从JSON和MSOAutosapeType接收了作为字符串的枚举形状类型 我的解决方案如下所示:
Office.MsoAutoShapeType shape_type = (Office.MsoAutoShapeType) Enum.Parse(typeof(Office.MsoAutoShapeType), arr_shape[7]);
PowerPoint.Shape shape = new_slide.Shapes.AddShape(shape_type, shape_position_left, shape_postion_top, shape_width, shape_position_height);
您正在尝试将一种类型枚举转换为另一种无法工作的类型枚举。核心枚举仅接受以下值(与类型枚举不同):您可以在数组中存储枚举值(如
msoShapeRectangle
的1
)和。感谢您指导我!