Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
 Поведение RichTextBox в WIN 10  [new]
Andry_Палыч
Member

Откуда:
Сообщений: 137
Здравствуйте, уважаемые!
Очень нужна помощь, сам пока в растерянности. Есть программка, довольно давно написанная. В ней на форме лежит Panel, в неё добавляются UserControl вертикально, друг под другом. в этих контролах находятся RichTextBox с небольшим количеством текста. RichTextBox без полос прокрутки, т.к. их размер подгоняется под текст. Когда UserControl на панели становится много - появляется вертикальный скролл панели и колёсиком всё прекрасно прокручивается. Прекрасно - это в win XP, WIN 7 и всех версиях WIN SERVER с 2008 по 2012 R2. А вот внезапно оказалось, что в WIN 10 (и WIN SERVER 2016) при попадании указателя мышки на RichTextBox скролл панели не работает! что бы пролистать её дальше - необходимо увести мышь на любой другой элемент.
Т.е. я так понимаю что пытается работать прокрутка RichTextBox. Событие перехватывается только им и не доходит до панели?
Если RichTextBox.Enable = false , то этой фигни не наблюдается - пролистывается панель. Проблема в том что RichTextBox имеет разный цвет фона, в зависимости от содержимого. а при Enable = false фон просто серый, беда.
11 июн 19, 18:16    [21906978]     Ответить | Цитировать Сообщить модератору
 Re: Поведение RichTextBox в WIN 10  [new]
pation
Member

Откуда: Москва
Сообщений: 4474
Andry_Палыч,

RichTextBox используется только для отображения информации?
13 июн 19, 12:55    [21907867]     Ответить | Цитировать Сообщить модератору
 Re: Поведение RichTextBox в WIN 10  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 3463
скорее всего после фокусировки объект захватывает мышку, попробуйте переопределить методы связанные с фокусом и кликами мышки или принудительно освободите мышку
13 июн 19, 13:29    [21907919]     Ответить | Цитировать Сообщить модератору
 Re: Поведение RichTextBox в WIN 10  [new]
Andry_Палыч
Member

Откуда:
Сообщений: 137
pation, да, он в readonly. Используется именно он из-за возможности визуального выделения разных блоков текста (шрифт и цвет)
13 июн 19, 16:24    [21908051]     Ответить | Цитировать Сообщить модератору
 Re: Поведение RichTextBox в WIN 10  [new]
Andry_Палыч
Member

Откуда:
Сообщений: 137
Roman Mejtes,
по получению фокуса уже стоит вызов функции фокусировки другого контрола (controlName.Focus()). а принудительно мышку освободить - это как? :)
13 июн 19, 16:29    [21908062]     Ответить | Цитировать Сообщить модератору
 Re: Поведение RichTextBox в WIN 10  [new]
Andry_Палыч
Member

Откуда:
Сообщений: 137
Да и нет тут получения фокуса. Мышкой не щёлкается по RichTextBox-у, достаточно навести курсор и всё - прокрутка панели блокируется (((
13 июн 19, 16:33    [21908069]     Ответить | Цитировать Сообщить модератору
 Re: Поведение RichTextBox в WIN 10  [new]
Cat2
Member

Откуда: Petroskoi, Karjala
Сообщений: 145663
Andry_Палыч
а при Enable = false фон просто серый, беда.

Почему такой косяк не знаю, но попробуйте дать richTextBox.Readonly=true
13 июн 19, 20:08    [21908220]     Ответить | Цитировать Сообщить модератору
 Re: Поведение RichTextBox в WIN 10  [new]
Andry_Палыч
Member

Откуда:
Сообщений: 137
Cat2, он уже и так Readonly=true :)
14 июн 19, 12:43    [21908593]     Ответить | Цитировать Сообщить модератору
 Re: Поведение RichTextBox в WIN 10  [new]
pation
Member

Откуда: Москва
Сообщений: 4474
Andry_Палыч
pation, да, он в readonly. Используется именно он из-за возможности визуального выделения разных блоков текста (шрифт и цвет)

я бы посоветовал для этих целей использовать не RichTextBox, а WebBrowser
17 июн 19, 16:00    [21909911]     Ответить | Цитировать Сообщить модератору
 Re: Поведение RichTextBox в WIN 10  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 3463
https://docs.microsoft.com/ru-ru/dotnet/framework/winforms/mouse-capture-in-windows-forms
Если RichTextBox захватывает мышку, то все события мышки будет обрабатывать именно этот элемент управления, где бы мышка не находилась.
Если какой то другой объект захватит мышку, то все события будет обрабатывать он, а другие элементы управления идут лесом.
Если RichTextBox не реагирует на мышку, значит кто то эту мышку захватил и удерживает, не давая другим элементам управления обрабатывать связанные с ней события.
я не особо работаю с WinForms, но этому на практике подскажу едва ли, может и не в этом дело вовсе, но проверить стоит.

в WPF можно захватом управлять как в рамках класса Control.CaptureMouse(), так и с помощью менеджера мышки Mouse.Capture() и т.д. как с этим дела обстоят в WinForms не имею понятия
17 июн 19, 16:27    [21909952]     Ответить | Цитировать Сообщить модератору
 Re: Поведение RichTextBox в WIN 10  [new]
Andry_Палыч
Member

Откуда:
Сообщений: 137
Roman Mejtes,
спасибо за предложенную идею, но увы "В Windows Forms имеет захват мыши элементом управления при нажатии кнопки мыши на элемент управления, и который мышь выпускается элементом управления, когда пользователь отпускает кнопку мыши."
MouseCaptureChanged() срабатывает только на щелчки любыми кнопками. Прокрутка колеса его не интересует ))))
18 июн 19, 19:44    [21910972]     Ответить | Цитировать Сообщить модератору
 Re: Поведение RichTextBox в WIN 10  [new]
Andry_Палыч
Member

Откуда:
Сообщений: 137
pation, спасибо, попробую
18 июн 19, 19:45    [21910973]     Ответить | Цитировать Сообщить модератору
Все форумы / WinForms, .Net Framework Ответить