Eto: [WinForms] Сбой прокрутки GridView в .Net Core 3.1

Созданный на 17 апр. 2020  ·  4Комментарии  ·  Источник: picoe/Eto


Я не мог придумать лучшего места для этого, но вот точная причина, по которой это не работает в .Net Core 3.1 .

Ожидаемое поведение

Я только начал работать над программой в .Net Core 3.1 в Windows (в частности, с использованием форм), и мой первый элемент управления, который я добавил, был комбинацией GridView + DataTable. Он работает нормально, пока вы не попытаетесь прокрутить с помощью мыши (да, полоса прокрутки работает нормально из того, что я пробовал)

Фактическое поведение

Как только вы прокрутите сетку, форма рухнет и выдаст эту ошибку:

Unhandled exception. System.TypeLoadException: Could not load type 'System.Windows.Forms.DataGrid' from assembly 'System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
   at Eto.WinForms.ScrollMessageFilter.IsScrollable(Control control)
   at Eto.WinForms.ScrollMessageFilter.PreFilterMessage(Message& m)
   at System.Windows.Forms.Application.ThreadContext.ProcessFilters(MSG& msg, Boolean& modified)
   at System.Windows.Forms.Application.ThreadContext.PreTranslateMessage(MSG& msg)
   at System.Windows.Forms.Application.ThreadContext.System.Windows.Forms.UnsafeNativeMethods.IMsoComponent.FPreTranslateMessage(MSG& msg)
   at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
   at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
   at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
   at System.Windows.Forms.Application.Run(Form mainForm)
   at Eto.WinForms.Forms.ApplicationHandler.Run()
   at Eto.Forms.Application.Run(Form mainForm)
   at Your.Program.Main(String[] args) in Your.Program.cs:line here

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

Шаги для воспроизведения проблемы

  1. Используйте .Net Core 3.1
  2. Запустите форму с примером GridView в Wiki
  3. Прокрутите колесо мыши / трекпад и испытайте сбой

Код, демонстрирующий проблему

https://github.com/picoe/Eto/wiki/GridView

Характеристики

  • Версия: 2.5.0 (Нугет)
  • Платформа(ы): WinForms
  • Операционная система(ы): Windwos 10

Спасибо за внимание к моей проблеме :)

Все 4 Комментарий

Спасибо, что сообщили о проблеме. Похоже, DataGrid был удален в .NET Core 3.1 вместе со многими другими. См. https://docs.microsoft.com/en-us/dotnet/core/compatibility/winforms#removed-controls .

Нам потребуется удалить ссылки на них в Eto.WinForms при сборке для .NET Core.

Спасибо, что сообщили о проблеме. Похоже, DataGrid был удален в .NET Core 3.1 вместе со многими другими. См. https://docs.microsoft.com/en-us/dotnet/core/compatibility/winforms#removed-controls .

Да, я уже упомянул это в начале своей проблемы, рад, что это известно 👍

Ах, не понял, что вы ссылаетесь на ту же страницу.. 😄 Еще раз спасибо, это должно быть относительно легко исправить, хотя вопрос в том, добавлять или нет TFM netcoreapp31 или просто #если это для 3.0+..

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

Спасибо за регистрацию проблемы! Это должно быть исправлено в последней сборке CI и будет включено в 2.5.1.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги