SpreadsheetGear.Windows.Wpf аварийно завершает работу, когда в формуле используется недопустимое имя книги для ссылки наC#

Место общения программистов C#
Anonymous
SpreadsheetGear.Windows.Wpf аварийно завершает работу, когда в формуле используется недопустимое имя книги для ссылки на

Сообщение Anonymous »

Когда в формуле используется недопустимое имя рабочей книги для ссылки на другую книгу в наборе рабочих книг, сообщение «Недопустимая формула», которое отображается в WinForms, не отображается в версии WPF, а вместо этого просто приводит к сбою всей программы с следующее исключение:

Код: Выделить всё

System.Windows.Markup.XamlParseException: 'Set property 'System.Windows.FrameworkElement.Name' threw an exception.'

Inner Exception
ArgumentException: '꒾' is not a valid value for property 'Name'.

This exception was originally thrown at this call stack:
System.Windows.DependencyObject.SetValueCommon(System.Windows.DependencyProperty, object, System.Windows.PropertyMetadata, bool, bool, System.Windows.OperationType, bool)
System.Windows.DependencyObject.SetValue(System.Windows.DependencyProperty, object)
System.Windows.Baml2006.WpfKnownMemberInvoker.SetValue(object, object)
MS.Internal.Xaml.Runtime.ClrObjectRuntime.SetValue(System.Xaml.XamlMember, object, object)
MS.Internal.Xaml.Runtime.ClrObjectRuntime.SetValue(object, System.Xaml.XamlMember, object)
Чтобы воспроизвести его, используйте официальный репозиторий образцов SpreadsheetGear с GitHub: https://github.com/SpreadsheetGear/Spre ... rerSamples

В любом из примеров просто установите для любой ячейки ссылку на лист + ячейку, которая не существует =Death!A1.
Я использую VS2022 с отладкой «Только мой код» отключен, я попадаю в какой-то запутанный файл, но вижу, что он дает сбой на последней строке этой функции.

Код: Выделить всё

[GeneratedCode("PresentationBuildTasks", "8.0.6.0")]
[DebuggerNonUserCode]
public void InitializeComponent()
{
if (!_꤆)
{
_꤆ = true;
Uri resourceLocator = new Uri("/SpreadsheetGear.Windows.Wpf;component/sg.windows.xaml/messagedialog.xaml", UriKind.Relative);
Application.LoadComponent(this, resourceLocator);
}
}
Я предполагаю, что это проблема с SpreadsheetGear, но возможно, мне просто не хватает какой-то проверки, которую мне нужно настроить на своей стороне, чтобы убедиться, что формула будет вычисляться правильно прежде чем произойдет какое-либо другое событие вычисления?
Любая помощь приветствуется, потому что в настоящее время я переношу наше приложение WinForms на WPF, и очень важно выяснить этот барьер, поскольку у нас будут клиенты, взаимодействующие с листы регулярно и если в них допущена опечатка, то хард краш недопустим.

Подробнее здесь: https://stackoverflow.com/questions/787 ... sed-in-a-f

Вернуться в «C#»