2016-04-25 2 views
1

Отработанные часы суетится с этим, пока я не сузили его до VS 2015. Это работало просто отлично в VS 2013:Visual Studio 2015 ОТДЫХ EPPlus Цвета

myWorksheet.Cells[1, 1].Style.Fill.BackgroundColor.SetColor(Color.LightGray); 

Но в VS 2015, хотя он компилируется нормально, когда Я бегу решение он вызывает исключение:

Color.LightGray = {System.NullReferenceException: ссылка на объект не указывает на экземпляр объекта
в Microsoft.Win32.SystemEvents.AddEventHandler (ключ объекта, делегат значение
в Microsoft.Win32.SystemEvents.add_UserPreferenceChanging (UserPreferenceChangingEventH ...

Есть еще один способ, чтобы определить цвет, который будет работать?

+0

Нет. Вам необходимо будет опубликовать код, который показывает, как событие SystemEvents.UserPreferenceChanging может быть релевантным. Это очень печально известное событие, байт обратно трудно, когда вы создаете пользовательский интерфейс в рабочем потоке. –

+0

Не уверен, что вы имеете в виду, когда предлагаете мне опубликовать код, который показывает, как событие SystemEvents.UserPreferenceChanging было бы актуальным. Обратитесь к фрагменту кода Стюарта ниже. Вот и все. Если я создаю новое консольное решение и добавлю только этот код, я все равно получаю исключение с нулевой ссылкой. – GDB

ответ

1

Проблема не с VS 2015. Если я это сделать:

using (var excel = new ExcelPackage()) 
{ 
    var ws = excel.Workbook.Worksheets.Add("sheet1"); 
    ws.Cells[1, 2].Value = "light grey"; 
    ws.Cells[1, 2].Style.Fill.PatternType = ExcelFillStyle.Solid; 
    ws.Cells[1, 2].Style.Fill.BackgroundColor.SetColor(Color.LightGray); 

    excel.SaveAs(new System.IO.FileInfo(@"C:\temp\temp.xlsx")); 
} 

тогда я получаю ожидаемый результат:

enter image description here

Несколько возможных причин этого может бросаться exception:

  • Вы только что установили объект FILL's .PatternType до ExcelFillStyle.Solid?
  • У вас есть ссылка на System.Drawing для правильной целевой структуры? (Что произошло после обновления VS, мне интересно, нацелены ли ваши ссылки на .NET 4.5, но ваш проект нацелен на более позднюю версию?).
+0

Это новое решение, которое я создал с VS 2015. Только синтаксис - это копирование и вставка из аналогичного проекта. Существует только одна версия System.Drawing, перечисленная в фреймворке (4.5.2), и это версия 4.0.30319.34211. Может быть, если я укажу на .NET 4.5.0? – GDB

+0

Я обновил все проекты в решении, чтобы указать на .NET 4.5 и подтвердил с помощью Assembly Explorer, я ссылаюсь на ту же версию System.Drawing. Все еще получаю исключение. – GDB

+0

Просто для смеха и усмешки я скопировал ваш код дословно, но без ссылки System.Drawing. Красная короткая подсказка заключалась в том, что мне нужно было добавить ссылку на System.Drawing 2.0, но когда она автоматически добавила ссылку для меня, она добавила 4.0. При запуске проекта я получаю ту же ошибку исключения ссылки. – GDB

 Смежные вопросы

  • Нет связанных вопросов^_^