Eto: [WinForms] A rolagem do GridView falha no .Net Core 3.1

Criado em 17 abr. 2020  ·  4Comentários  ·  Fonte: picoe/Eto


Não consegui pensar em um lugar melhor para colocar isso, mas aqui está uma razão exata pela qual isso está quebrado no .Net Core 3.1

Comportamento esperado

Acabei de começar a trabalhar em um programa em .Net Core 3.1 no Windows (usando Forms especificamente) e meu primeiro controle a adicionar foi um combo GridView + DataTable. Funciona bem até você tentar rolar usando o mouse (sim, a barra de rolagem funciona bem pelo que tentei)

Comportamento real

Depois de rolar a grade, o formulário travará e fornecerá este erro:

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

Forneci o motivo dessa falha na minha primeira frase e mudarei para uma versão diferente do .Net Core apenas para evitar isso até que eu saiba que isso foi resolvido.

Etapas para reproduzir o problema

  1. Usar .Net Core 3.1
  2. Execute um formulário com o exemplo GridView no Wiki
  3. Role a roda do mouse/trackpad e experimente uma falha

Código que demonstra o problema

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

Especificações

  • Versão: 2.5.0 (Nuget)
  • Plataforma(s): WinForms
  • Sistema(s) Operacional(is): Windwos 10

Obrigado por dar uma olhada no meu problema :)

Todos 4 comentários

Obrigado por relatar o problema. Parece que o DataGrid foi removido no .NET Core 3.1, junto com vários outros. Consulte https://docs.microsoft.com/en-us/dotnet/core/compatibility/winforms#removed -controls.

Precisaremos remover a referência àqueles em Eto.WinForms ao compilar para .NET Core.

Obrigado por relatar o problema. Parece que o DataGrid foi removido no .NET Core 3.1, junto com vários outros. Consulte https://docs.microsoft.com/en-us/dotnet/core/compatibility/winforms#removed -controls.

Sim, eu já mencionei isso no topo do meu problema, ainda bem que é conhecido 👍

Ah, não percebi que você vinculou à mesma página .. 😄 Obrigado novamente, isso deve ser relativamente fácil de corrigir, embora a questão seja adicionar ou não um netcoreapp31 TFM ou apenas #if for 3.0+..

Estou pensando que adicionar um novo TFM irá expor esses problemas como erros de compilação em vez de ter que lidar com eles de outra forma, então isso deve ser melhor.

Obrigado por registrar o problema! Isso deve ser corrigido na compilação de CI mais recente e será incluído no 2.5.1.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

ArsenShnurkov picture ArsenShnurkov  ·  17Comentários

azunyuuuuuuu picture azunyuuuuuuu  ·  23Comentários

Xisrith picture Xisrith  ·  5Comentários

TomQv picture TomQv  ·  6Comentários

Jojatekok picture Jojatekok  ·  33Comentários