Eto: [WinForms] تعطل تمرير GridView في .NET Core 3.1

تم إنشاؤها على ١٧ أبريل ٢٠٢٠  ·  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 (Nuget)
  • النظام الأساسي (المنصات): 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.

نعم لقد ذكرت بالفعل أنه في الجزء العلوي من مشكلتي ، سعيد لأنه معروف 👍

آه ، لم تدرك أنك مرتبط بالصفحة نفسها .. شكرًا مرة أخرى ، يجب أن يكون هذا سهل الإصلاح نسبيًا ، على الرغم من أن السؤال هو ما إذا كنت تريد إضافة netcoreapp31 TFM أم لا فقط إذا خرجت لـ 3.0+ ..

أفكر في إضافة آلية مالية جديدة ستكشف هذه المشكلات على أنها أخطاء تجميعية بدلاً من الاضطرار إلى التعامل معها بطريقة أخرى بحيث يكون ذلك أفضل.

شكرا لتقديم القضية! يجب إصلاح ذلك في أحدث إصدار من CI وسيتم تضمينه في 2.5.1.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات