Я хочу создать текстовое поле с индексом каждой строки в отдельном ящике рядом с самим собой. Все почти выполнено, но прокрутка по-прежнему является проблемой для меня. Когда я использую WndProc
для управления прокруткой, WM_VSCROLL
работает очень хорошо и одновременно выполняет прокрутку управления, но когда я хочу отправить WM_MOUSEWHEEL
через List-box, это не сработает. Я думал, что могу использовать трюк и повторять WM_VSCROLL
, когда пользователь перемещает колесико мыши но это тоже не работает.Как синхронизировать прокрутку текстового поля и списка
private const int WM_VSCROLL = 0x115;
private const int WM_MOUSEWHEEL = 0x20A;
protected override void WndProc(ref Message m)
{
base.WndProc(ref m);
if (m.Msg == WM_VSCROLL)
{
Message newMessage = Message.Create(Sequence.Handle, m.Msg, m.WParam, m.LParam);
Sequence.DirectMessage(newMessage);//turn to thread
}
else if(m.Msg == WM_MOUSEWHEEL)
{
if((int)m.WParam<0)
{
Message newMessage = Message.Create(Sequence.Handle, WM_VSCROLL,(IntPtr)1,(IntPtr) 0);
Message newMessage2 = Message.Create(this.Handle, WM_VSCROLL, (IntPtr)1, (IntPtr)0);
Sequence.DirectMessage(newMessage);
base.WndProc(ref newMessage2);
}
else
{
Message newMessage = Message.Create(Sequence.Handle, WM_VSCROLL, (IntPtr)0, (IntPtr)0);
Message newMessage2 = Message.Create(this.Handle, WM_VSCROLL, (IntPtr)0, (IntPtr)0);
Sequence.DirectMessage(newMessage);
base.WndProc(ref newMessage2);
}
}
}
Sequence
это имя моего списка коробки и this
выводит на мой textbox.I был бы признателен за любую помощь ....