Eto: [WinForms] .Net Core3.1でGridViewのスクロールがクラッシュする

作成日 2020年04月17日  ·  4コメント  ·  ソース: picoe/Eto


これを置くのにこれ以上の場所は考えられませんでしたが、.Net Core3.1でこれが壊れている正確な理由は次のとおりです。

予想される行動

Windows上の.NetCore 3.1で(特にフォームを使用して)プログラムの作業を開始したばかりで、最初に追加したコントロールは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

このクラッシュの理由を最初の文で説明しました。これが解決されたことに気付くまで、これを回避するために、別のバージョンの.NetCoreに切り替えます。

問題を再現する手順

  1. .Net Core3.1を使用する
  2. WikiのGridViewの例でフォームを実行します
  3. マウスホイール/トラックパッドをスクロールしてクラッシュを体験する

問題を示すコード

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

仕様

  • バージョン:2.5.0(Nuget)
  • プラットフォーム:WinForms
  • オペレーティングシステム:Windwos 10

私の問題を見てくれてありがとう:)

全てのコメント4件

問題を報告していただきありがとうございます。 DataGridは、他の多くの製品とともに.NET Core3.1で削除されたようです。 https://docs.microsoft.com/en-us/dotnet/core/compatibility/winforms#removed-controlsを参照してください。

.NET Core用にビルドする場合は、Eto.WinForms内の参照を削除する必要があります。

問題を報告していただきありがとうございます。 DataGridは、他の多くの製品とともに.NET Core3.1で削除されたようです。 https://docs.microsoft.com/en-us/dotnet/core/compatibility/winforms#removed-controlsを参照してください。

ええ、私はすでに私の問題の冒頭で、それが知られていることをうれしく思います👍

ああ、あなたが同じページにリンクしていることに気づいていませんでした。😄問題はnetcoreapp31 TFMを追加するかどうか、または3.0+で追加するかどうかですが、これは比較的簡単に修正できるはずです。

新しいTFMを追加すると、これらの問題を他の方法で処理するのではなく、コンパイルエラーとして公開するので、より良い結果が得られると思います。

問題を提出していただきありがとうございます! これは最新のCIビルドで修正される必要があり、2.5.1に含まれる予定です。

このページは役に立ちましたか?
0 / 5 - 0 評価