0

我正在使用 vsto,与 excel-2007 一起工作...

让我们考虑一下我有一个矩阵如下

     A    B    C
 1  10   11    12
 2  10   12    11
 3  11   10    12

我总是会读取一些填充有随机数的随机矩阵......例如上面,另一个条件是它们也将根据相同的数字随机着色,例如。在上述情况下,包含 10 的单元格将被着色为红色,包含 11 的单元格将被着色为绿色,依此类推......

现在我必须在工作表上放置某种面板,以显示此类信息

rectangle with RED color  - 10
rectangle with GREEN color - 11
rectangle with BLUE color  - 12

我试图用图表来做,但不幸的是没有成功,...... 我不能把这些信息放在一系列单元格上,这不是我正在寻找的解决方案......我必须把它放在某种面板上,这样用户就可以将面板拖动到他们想要的任何地方,..

我不知道该怎么做,请您给我建议一种如何创建某种面板并将该信息放在那里的方法...谢谢!

抱歉没有提到这一点,我希望能够在面板内放置矩形,这样每当我移动面板时,面板的所有组件都应该一起移动......我也不希望用户能够修改面板,他们应该只能移动面板......

4

1 回答 1

1

仅对于文本,文本框可能会起作用。

如果你确实需要矩形,你可以构造几个绘图对象:填充矩形用于彩色矩形,文本框用于描述和一个白色背景的矩形作为图例的框架。绘制后,您可以对它们进行分组,这会将它们从用户的 POV 中变成单个对象。

这是一个来自 MSDN 的编辑示例,我已转换为 C# 并进行了测试:

Excel.Worksheet ex = (Excel.Worksheet)Application.ActiveSheet;
ex.Shapes.AddShape(Microsoft.Office.Core.MsoAutoShapeType.msoShapeIsoscelesTriangle, 10, 10, 100, 100).Name = "shpOne";
ex.Shapes.AddShape(Microsoft.Office.Core.MsoAutoShapeType.msoShapeIsoscelesTriangle, 150, 10, 100, 100).Name = "shpTwo";
ex.Shapes.AddShape(Microsoft.Office.Core.MsoAutoShapeType.msoShapeIsoscelesTriangle, 300, 10, 100, 100).Name = "shpThree";
object[] shapeArray = {"shpOne", "shpTwo", "shpThree"};
Excel.ShapeRange rng = ex.Shapes.get_Range(shapeArray);
Excel.Shape grp = rng.Group();

这将创建三个链接在一起的三角形 - 用户可以将它们拖到周围,就像一个单独的对象一样。

于 2009-07-13T14:49:09.597 回答