Изменение CellColor в MS Project 2016 с помощью С#

В настоящее время я делаю надстройку MS Project 2016, и мне нужно раскрасить конкретную задачу (строку задачи), когда условие истинно. Я использую С# .NET4

Я сделал метод:

public void colorYellow(MSProject.Task task){
        Globals.ThisAddIn.Application.SelectRow(task.ID);
        Globals.ThisAddIn.Application.ActiveCell.CellColor = PjColor.pjYellow;      
    }

Я получаю исключение: непредвиденная ошибка метода.

Есть ли способ как-то покрасить всю строку задач? Спасибо за Ваш ответ!


person Kuba Vaněk    schedule 13.07.2018    source источник
comment
Поскольку строка 1 является прототипом функции, в какой строке возникает ошибка, если выполнить ее с помощью отладчика? Должна быть возможность делать то, что вы хотите: держитесь там.   -  person Jerred S.    schedule 13.07.2018


Ответы (1)


Неожиданная ошибка метода возникает из-за того, что вы фактически выбираете пустую строку, потому что метод SelectRow по умолчанию является относительным. Если необязательному второму аргументу RowRelative не передается значение False, выделение перемещается на task.ID строки вперед. Так что постарайтесь:

Globals.ThisAddIn.Application.SelectRow(task.ID, false);

См. справочник MSDN по методу SelectRow< /а>

Если цвет ячейки по-прежнему не меняется, посмотрите Font32Ex для альтернативного способа изменения цвета ячейки. Несмотря на ссылку MSDN, указывающую, что аргумент Color изменяет цвет font, несколько сообщений SO (и мое собственное тестирование) показывают, что он фактически меняет цвет фона. (Примечание: это далеко не единственный случай, когда справочная страница MSDN для MS Project неверна.)

Сообщение SO №1 об изменении цвета фона

SO post #2 о цветовом кодировании

(Примечание к образцу кода: я программист vb.net... не уверен, что это правильный синтаксис для передачи False в качестве второго аргумента.)

person Rachel Hettinger    schedule 14.07.2018