Eto: [WinForms] Le défilement de GridView se bloque dans .Net Core 3.1

Créé le 17 avr. 2020  ·  4Commentaires  ·  Source: picoe/Eto


Je ne pouvais pas penser à un meilleur endroit pour mettre cela, mais voici une raison exacte pour laquelle cela est cassé dans .Net Core 3.1

Comportement prévisible

Je viens de commencer à travailler sur un programme dans .Net Core 3.1 sous Windows (en utilisant spécifiquement Forms) et mon premier contrôle à ajouter était un combo GridView + DataTable. Cela fonctionne bien jusqu'à ce que vous essayiez de faire défiler à l'aide de la souris (oui, la barre de défilement fonctionne bien d'après ce que j'ai essayé)

Comportement réel

Une fois que vous aurez fait défiler la grille, le formulaire se bloquera et fournira cette erreur :

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

J'ai fourni la raison de ce plantage dans ma première phrase et je passerai à une version différente de .Net Core juste pour éviter cela jusqu'à ce que je sache que cela a été résolu.

Étapes pour reproduire le problème

  1. Utiliser .Net Core 3.1
  2. Exécuter un formulaire avec l'exemple GridView dans le Wiki
  3. Faites défiler la molette de votre souris/pavé tactile et faites l'expérience d'un crash

Code qui illustre le problème

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

Caractéristiques

  • Version : 2.5.0 (nuget)
  • Plate-forme(s) : WinForms
  • Système(s) d'exploitation : Windwos 10

Merci de vous être penché sur mon problème :)

Tous les 4 commentaires

Merci d'avoir signalé le problème. On dirait que DataGrid a été supprimé dans .NET Core 3.1, ainsi que de nombreux autres. Voir https://docs.microsoft.com/en-us/dotnet/core/compatibility/winforms#removed -controls.

Nous devrons supprimer les références à ceux dans Eto.WinForms lors de la construction pour .NET Core.

Merci d'avoir signalé le problème. On dirait que DataGrid a été supprimé dans .NET Core 3.1, ainsi que de nombreux autres. Voir https://docs.microsoft.com/en-us/dotnet/core/compatibility/winforms#removed -controls.

Ouais j'ai déjà mentionné ça en haut de mon sujet, content que ça se sache 👍

Ah, je ne savais pas que vous aviez lié à la même page .. 😄 Merci encore, cela devrait être relativement facile à résoudre, bien que la question soit de savoir s'il faut ou non ajouter un TFM netcoreapp31 ou simplement #if it out for 3.0+ ..

Je pense que l'ajout d'un nouveau TFM exposera ces problèmes comme des erreurs de compilation au lieu d'avoir à les traiter autrement, ce qui devrait être mieux.

Merci d'avoir signalé le problème ! Cela devrait être corrigé dans la dernière version de CI et sera inclus dans 2.5.1.

Cette page vous a été utile?
0 / 5 - 0 notes