From 8c53e76856062fbdd3eb78d7794ee209cd2f8779 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 11 Nov 2025 20:16:52 +0000 Subject: [PATCH 1/4] Initial plan From d56b695557b9a2aeb08478c140855a3c56736b3a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 11 Nov 2025 20:20:41 +0000 Subject: [PATCH 2/4] Initial exploration - .NET 10 SDK installed Co-authored-by: awaescher <3630638+awaescher@users.noreply.github.com> --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index fce34e1..1a9478b 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ Drag&Drop in WinForms is cumbersome and error-prone. There are multiple events t Wouldn't it be great if you could use Drag&Drop with fluent code like this? - + ```cs private void picControlPreviewBehindCursor_MouseDown(object sender, MouseEventArgs e) { @@ -28,7 +28,7 @@ private void picControlPreviewBehindCursor_MouseDown(object sender, MouseEventAr // To() to define target controls and how the dragged data should be used on drop } ``` -snippet source | anchor +snippet source | anchor It's all in there: Putting data to the drag&drop operation, attaching a custom preview image to the mouse cursor, working with the dragged data once it's dropped and much more. @@ -46,7 +46,7 @@ Careful developers won't track a flag whether the mouse button is still down or FluentDrag&Drop does exactly that if defined with `OnMouseMove()`. However there is no flag or location to track. Methods like `WithData()` won't accept direct variables to be passed anymore, instead they require a function which gets called as soon as the mouse move is detected later on - if the user pressed and held the mouse button and if he moved a few pixels. Additionally, the developer has the possibility to validate the input like a valid control selection with `If()`. Of course, this gets called just like `WithData()` as soon as the user moves the mouse accordingly: - + ```cs private void CountryList_MouseDown(object sender, MouseEventArgs e) { @@ -62,7 +62,7 @@ private void CountryList_MouseDown(object sender, MouseEventArgs e) .To(target, MoveItems); } ``` -snippet source | anchor +snippet source | anchor This (and the 5 line method `MoveItems()`) is everything we need to implement two-way Drag&Drop lists: From e3636333082e14f90ae73aabcaf57029434d085c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 11 Nov 2025 20:23:23 +0000 Subject: [PATCH 3/4] Add .NET 10 multitargeting support to all projects Co-authored-by: awaescher <3630638+awaescher@users.noreply.github.com> --- .github/workflows/ci.yml | 1 + src/FluentDragDrop.Effects/FluentDragDrop.Effects.csproj | 2 +- src/FluentDragDrop/FluentDragDrop.csproj | 2 +- src/FluentDragDrop/Preview/PreviewForm.cs | 2 ++ src/FluentDragDropExample/FluentDragDropExample.csproj | 2 +- .../FluentDragDropNuGetExample.csproj | 2 +- src/global.json | 4 ++-- 7 files changed, 9 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6f35b95..7c42359 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -38,6 +38,7 @@ jobs: dotnet-version: | 6.0.x 8.0.x + 10.0.x - name: Restore dependencies run: dotnet restore src/FluentDragDrop.sln diff --git a/src/FluentDragDrop.Effects/FluentDragDrop.Effects.csproj b/src/FluentDragDrop.Effects/FluentDragDrop.Effects.csproj index 5b53e78..5c1223f 100644 --- a/src/FluentDragDrop.Effects/FluentDragDrop.Effects.csproj +++ b/src/FluentDragDrop.Effects/FluentDragDrop.Effects.csproj @@ -1,7 +1,7 @@ Library - net6.0-windows;net8.0-windows + net6.0-windows;net8.0-windows;net10.0-windows true true FluentDrag&Drop is the sexiest Drag&Drop implemtation for WinForms on this planet. diff --git a/src/FluentDragDrop/FluentDragDrop.csproj b/src/FluentDragDrop/FluentDragDrop.csproj index 46a696c..c76b3ea 100644 --- a/src/FluentDragDrop/FluentDragDrop.csproj +++ b/src/FluentDragDrop/FluentDragDrop.csproj @@ -1,7 +1,7 @@ Library - net6.0-windows;net8.0-windows + net6.0-windows;net8.0-windows;net10.0-windows true true Drag&Drop in WinForms is cumbersome and error-prone. There are multiple events to handle, members to track and properties to set on at least two controls. diff --git a/src/FluentDragDrop/Preview/PreviewForm.cs b/src/FluentDragDrop/Preview/PreviewForm.cs index fd5932b..d037be7 100644 --- a/src/FluentDragDrop/Preview/PreviewForm.cs +++ b/src/FluentDragDrop/Preview/PreviewForm.cs @@ -1,5 +1,6 @@ using FluentDragDrop.Effects; using System; +using System.ComponentModel; using System.Drawing; using System.Windows.Forms; @@ -133,6 +134,7 @@ protected override void OnLostCapture() public IPreviewOpacityController PreviewOpacityController { get; private set; } + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] public bool AllowUpdates { get; set; } = true; } } diff --git a/src/FluentDragDropExample/FluentDragDropExample.csproj b/src/FluentDragDropExample/FluentDragDropExample.csproj index 84f4d51..d266662 100644 --- a/src/FluentDragDropExample/FluentDragDropExample.csproj +++ b/src/FluentDragDropExample/FluentDragDropExample.csproj @@ -2,7 +2,7 @@ WinExe - net6.0-windows;net8.0-windows + net6.0-windows;net8.0-windows;net10.0-windows true true diff --git a/src/FluentDragDropNuGetExample/FluentDragDropNuGetExample.csproj b/src/FluentDragDropNuGetExample/FluentDragDropNuGetExample.csproj index 895ada2..1b4140d 100644 --- a/src/FluentDragDropNuGetExample/FluentDragDropNuGetExample.csproj +++ b/src/FluentDragDropNuGetExample/FluentDragDropNuGetExample.csproj @@ -2,7 +2,7 @@ WinExe - net6.0-windows;net8.0-windows + net6.0-windows;net8.0-windows;net10.0-windows true true diff --git a/src/global.json b/src/global.json index db989f5..9682ab7 100644 --- a/src/global.json +++ b/src/global.json @@ -1,7 +1,7 @@ { "sdk": { - "version": "3.1.100", - "rollForward": "latestMajor", + "version": "10.0.100", + "rollForward": "latestMinor", "allowPrerelease": true } } \ No newline at end of file From e8bbd8381a5a12c080aa5b709d362811190b8b86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20W=C3=A4scher?= Date: Tue, 11 Nov 2025 21:51:36 +0000 Subject: [PATCH 4/4] Undo readme changes --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 1a9478b..db3ff4a 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ Drag&Drop in WinForms is cumbersome and error-prone. There are multiple events t Wouldn't it be great if you could use Drag&Drop with fluent code like this? - + ```cs private void picControlPreviewBehindCursor_MouseDown(object sender, MouseEventArgs e) { @@ -28,7 +28,7 @@ private void picControlPreviewBehindCursor_MouseDown(object sender, MouseEventAr // To() to define target controls and how the dragged data should be used on drop } ``` -snippet source | anchor +snippet source | anchor It's all in there: Putting data to the drag&drop operation, attaching a custom preview image to the mouse cursor, working with the dragged data once it's dropped and much more. @@ -46,7 +46,7 @@ Careful developers won't track a flag whether the mouse button is still down or FluentDrag&Drop does exactly that if defined with `OnMouseMove()`. However there is no flag or location to track. Methods like `WithData()` won't accept direct variables to be passed anymore, instead they require a function which gets called as soon as the mouse move is detected later on - if the user pressed and held the mouse button and if he moved a few pixels. Additionally, the developer has the possibility to validate the input like a valid control selection with `If()`. Of course, this gets called just like `WithData()` as soon as the user moves the mouse accordingly: - + ```cs private void CountryList_MouseDown(object sender, MouseEventArgs e) { @@ -62,7 +62,7 @@ private void CountryList_MouseDown(object sender, MouseEventArgs e) .To(target, MoveItems); } ``` -snippet source | anchor +snippet source | anchor This (and the 5 line method `MoveItems()`) is everything we need to implement two-way Drag&Drop lists: @@ -107,4 +107,4 @@ Those effects are powered by another project called [FluentTransitions](https:// --- -Images taken from Unsplash, links to these are located at [/doc/Unsplash](/doc/Unsplash). +Images taken from Unsplash, links to these are located at [/doc/Unsplash](/doc/Unsplash). \ No newline at end of file