легенда c # excel - PullRequest
       21

легенда c # excel

0 голосов
/ 13 июля 2009

я использую 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

Я пытался сделать это с помощью диаграмм, но, к сожалению, не удалось, ... я не могу поместить эту информацию в диапазон ячеек, это не решение, которым я являюсь ищу , ... я должен надеть его какая-то панель, чтобы пользователь мог перетаскивать панель куда угодно ..

Я понятия не имею, как это сделать, пожалуйста, вы можете предложить мне способ, как создать что-то вроде панель и разместить эту информацию там ... Спасибо!

извините, что не упомянул об этом, я хочу иметь возможность помещать прямоугольники внутри панель, так что всякий раз, когда я перемещаю панель, все компоненты панели должны двигаться вместе ... также я не хочу, чтобы пользователь мог изменять содержимое панели, они могут перемещать только панель ...

1 Ответ

1 голос
/ 13 июля 2009

Только для текста, текстовое поле, скорее всего, сработает.

Если вам определенно нужны прямоугольники, вы можете создать несколько графических объектов: заполненные прямоугольники для цветных прямоугольников, текстовые поля для описаний и прямоугольник с белым фоном в качестве рамки для легенды. После отрисовки вы можете сгруппировать их, которые превратят их в один объект из 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();

Это создает три треугольника, которые связаны друг с другом - пользователь будет перетаскивать их, как будто один объект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...