У меня проблема с перетаскиванием объектов при их выборе. Я попробовал несколько методов, используя события мыши, чтобы установить менее чувствительный порог. Например.
Они не работают в первую очередь, я думаю, потому что я использую графический движок Piccolo.
Я знаю, что это можно сделать через реестр, но я не хочу вмешиваться в записи реестра пользователей.
Альтернативой, по-видимому, является использование pinvoke с SystemParametersInfo;
и параметры SPI_SETDRAGHEIGHT и SPI_SETDRAGWIDTH.
Я знаю, как его вызывать,
[DllImport("user32.dll", SetLastError = true)]
static extern bool SystemParametersInfo(int uiAction, int uiParam, IntPtr pvParam, int fWinIni);
И я знаю, что uiAction
параметров uiAction
,
SPI_SETDRAGHEIGHT = 0x004D
SPI_SETDRAGWIDTH = 0x004C
Я знаю, что uiParam
- это ширина или высота.
Помимо этого я застрял. Я действительно не понимаю этого материала и понятия не имею, как установить последние два параметра.
Существует C++ (?) Код здесь.
Но мои знания о вариантах C и их преобразование в С# являются печальными.
Так может кто-нибудь, пожалуйста, помогите мне установить порог перетаскивания перетаскивания в моем приложении?
Я проверил исходный код Piccolo и обнаружил, что порог перетаскивания не зависит от ваших системных настроек, поэтому использование PInvoke для вызова SystemParametersInfo не поможет вам здесь. Однако порог настраивается путем изменения MinDragStartDistance
свойства PDragSequenceEventHandler
объекта. Значение по умолчанию равно 0, что, вероятно, объясняет, почему ваши пользователи разочарованы тем, что они слишком чувствительны.
Однако у меня нет опыта использования Piccolo, поэтому я не могу прокомментировать, как получить доступ к этому конкретному свойству.