civic060 Ответов: 0

Значение не может быть нулевым. Имя параметра: шрифт


Преобразование приложения из использования Chart FX 7 в 8. Crosstabdataprovider теперь устарел. После изменения кода для использования Pivoting (теперь доступно в chart fx 8) приложение сначала работает нормально, однако если вы нажмете кнопку на форме windows, чтобы отобразить диаграмму с различными значениями, появится следующая ошибка.

"Значение не может быть нулевым. Имя параметра: шрифт"

Необработанное исключение типа 'System.ArgumentNullException' произошло в системе.Drawing.dll

Дополнительная информация: значение не может быть нулевым.


новый кодекс:
Dim listProvider As New ListProvider(dataSource)

chart.DataSource = listProvider

Dim FieldName As New NumericDataField()
FieldName.DataPath = Me.SelectedValueType.FieldName
chart.DataSourceSettings.DataFields.Add(FieldName)

Dim XAxisFieldName As New NumericDataField()
XAxisFieldName.DataPath = formConfiguration.XAxisFieldName
chart.DataSourceSettings.DataFields.Add(XAxisFieldName)

chart.Series(0).Text = formConfiguration.SeriesControllingListBox.SelectedValue.ToString()


старый код:
Dim SeriesFieldName As New NumericDataField()
SeriesFieldName.DataPath = formConfiguration.SeriesFieldName
chart.DataSourceSettings.DataFields.Add(SeriesFieldName)

Dim adt As New AnalysisDataTransformer()
adt.Pivoting.Add(XAxisFieldName)

chart.DataSourceSettings.Transformers.Add(adt)

Dim listProvider As New ListProvider(dataSource)
Dim crosstabProvider As New CrosstabDataProvider With {.DataSource = listProvider}
With chart.DataSourceSettings.Fields
     .Add(New FieldMap(formConfiguration.SeriesFieldName, FieldUsage.ColumnHeading))
     .Add(New FieldMap(formConfiguration.XAxisFieldName, FieldUsage.RowHeading))
     .Add(New FieldMap(Me.SelectedValueType.FieldName, FieldUsage.Value))
End With

chart.DataSource = crosstabProvider

Fredrik Bornander

Где это исключение выбрасывается? Какая линия?

civic060

В классе обработчика исключений (см. ниже). <br>
 <br>

HandleException общественную функцию(как byval E как исключение, handlinginstanceid, которое как byval в качестве идентификатора GUID) В Качестве Исключения Реализует IExceptionHandler.HandleException

Дим результат как свойство dialogresult = меня.ShowThreadExceptionDialog(е handlinginstanceid, которое)

Вернуть е

Конечная Функция

Частная ShowThreadExceptionDialog функция(как byval E как исключение, handlinginstanceid, которое как byval в качестве идентификатора GUID) как свойство dialogresult&ЛТ;БР&ГТ;
 <br>
'Отформатируйте исключение<br>
Dim sb As StringBuilder = New StringBuilder<br>
Dim writer As StringWriter = New StringWriter(sb)<br>
Дим форматирования как AppTextExceptionFormatter = новый AppTextExceptionFormatter(писатель, е, handlinginstanceid, которое)&ЛТ;БР&ГТ;
форматер.Формат()<br>
 <br>
Dim errorMsg As String = sb.ToString()<br>
 <br>
С Моим ... Заявлением.Информация<br>
Возвратите MessageBox.Show(errorMsg, String.Формат("{0} Error - v{1}.{2}.{3}.{4}", .название, версия.основной номер версии.вспомогательная версия.Сборка, Версия.Редакция), MessageBoxButtons.Хорошо, MessageBoxIcon.Информация)<br>
Конец с<br>
 <br>
Конечная Функция

Fredrik Bornander

Вы уверены, что его выбрасывают оттуда? Разве это не просто место, где он отображается?
Посмотрите на трассировку стека исключения и выясните строку из нее, или включите "break on exceptions".

civic060

Включение break on exceptions также нарушает приведенный выше код, когда он пытается отформатировать и отобразить ошибку. Система.Рисования не было в моем окне, поэтому пришлось добавить это и включить выброшенные исключения.

Вот как выглядит трассировка стека.

в системе.Рисование.Графика.MeasureString(String text, Font font, SizeF layoutArea, StringFormat stringFormat)
в системе.Рисование.Графика.MeasureString(String text, Font font, SizeF layoutArea)
в системе.Рисование.Графика.MeasureString(текст строки, шрифт шрифта)
в SoftwareFX.WinForms.Внутренний.GraphicsEx.MeasureString(строка s, шрифта, типа int32 значение maxwidth, логическое useCharacterRanges)
в ChartFX.WinForms.Название.а(IGraphicsEx A_0, A_1 Логическое)
в ChartFX.WinForms.Название.а(г A_0, прямоугольник[] A_1, прямоугольник&амп; А_2, логическое A_3, A_4 HighlightState)
в ChartFX.WinForms.TitleCollection.b(g A_0, прямоугольник[] A_1)
в ChartFX.Приложения WinForms.г. б(логическое A_0, A_1 логическое)
в ChartFX.Приложения WinForms.г. к()
в ChartFX.WinForms.Chart.a(PaintBar A_0, IGraphicsEx A_1, прямоугольник A_2)

0 Ответов