WinForms: максимальный размер элемента управления-65535-обходной путь?



В WinForms и C#, кажется, я не могу создать элемент управления шире, чем 65535. Если я установлю его равным 70,000, значение будет сброшено до 65535.
Копаться в источнике контроля.Размер с ILSpy, я не мог сразу найти код, ответственный за зажим размера.



Так это ограничение Win32 API или Windows Forms? Есть ли способ обойти это, например, с неуправляемым взаимодействием?



Причина, по которой мне нужен такой большой контроль, заключается в том, что я рисую музыкальную форму очень длинных аудиофайлов на него. (Да, я мог бы нарисовать форму волны напрямую, без содержащего элемента управления; но это потребовало бы большого количества рефакторинга). Я не говорю здесь о коде рисования. Ясно, что нужно рисовать только видимую часть, но дело в том, что я хотел бы иметь элемент управления шириной до 200.000 пикселей.

535   2  

2 ответов:

Это ограничение winapi. Довольно сложно, положение мыши сообщается, скажем, с сообщением WM_MOUSEMOVE с положением мыши, упакованным в аргумент LPARAM. С 16 битами для X-и 16 битами для Y-местоположения.

Вам придется с этим смириться. Это не является ограничением, например, для свойства AutoScrollMinSize панели. Это то, что вы всегда будете использовать в этом случае, так или иначе, начните рисовать в режиме автопрокрутки.

Я действительно думаю, что это ограничение windows forms, дело в том, что для ваших нужд форма WPF была бы более подходящей, поскольку она позволяет большие нагрузки. Только мое мнение.

Comments

    Ничего не найдено.