Свое поле для ввода текста - подводные камни
От: Shmj Ниоткуда  
Дата: 04.05.21 14:26
Оценка:
Если просто перехватывать нажатые клавиши и рендерить текст + по таймеру рендерить мигающую черточку (курсор). Так ли все просто или есть подводные камни?

Возьмем минимальный вариант как Paint.Net — там нельзя выделять текст.

Вот что еще вижу навскидку:

1. Обработка клавиш вперед/назад (курсор вклинивать между буквами).
2. Обработка удаления символа (бекспейс и делит).
3. Обработка нажатия мыши и вклинивание курсора в указанное место.
4. Обработка клавиш Ctrl+C.

Интуиция подсказывает, что не все так просто. Что я забыл?
Re: Свое поле для ввода текста - подводные камни
От: Kolesiki  
Дата: 04.05.21 15:21
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Если просто перехватывать нажатые клавиши и рендерить текст + по таймеру рендерить мигающую черточку (курсор).


Если ты влез на уровень "мигающей чёрточки", ты явно делаешь что-то не так.

S>Интуиция подсказывает, что не все так просто. Что я забыл?


Ты забыл УКАЗАТЬ ЗАДАЧУ.
Re[2]: Свое поле для ввода текста - подводные камни
От: Shmj Ниоткуда  
Дата: 04.05.21 16:23
Оценка: -1
Здравствуйте, Kolesiki, Вы писали:

K> Если ты влез на уровень "мигающей чёрточки", ты явно делаешь что-то не так.


Не факт...

S>>Интуиция подсказывает, что не все так просто. Что я забыл?

K>Ты забыл УКАЗАТЬ ЗАДАЧУ.

Прозрачный TextBox для WinForms. Проверил
Автор: Shmj
Дата: 12.11.20
существующие решения — ни одно нормально не работает.

Вроде кажется что ничего сложного нет, если не реализовывать выделение текста.
Re: Свое поле для ввода текста - подводные камни
От: LuciferSaratov Россия  
Дата: 04.05.21 16:44
Оценка: +1
Здравствуйте, Shmj, Вы писали:

S>Интуиция подсказывает, что не все так просто. Что я забыл?


интуиция тебе правильно подсказывает.
как минимум ты забыл Ctrl-Insert и Shift-Insert, Ctrl-Backspace и IAccessible/IAccessible2.
наверняка ещё что-то есть.
Re[3]: Свое поле для ввода текста - подводные камни
От: Kolesiki  
Дата: 04.05.21 18:28
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Здравствуйте, Kolesiki, Вы писали:


K>> Если ты влез на уровень "мигающей чёрточки", ты явно делаешь что-то не так.


S>Не факт...


Факт. Переписывать целый контрол только чтобы был виден бэк?? Такой логикой ты дойдёшь до классического "переписать всю Венду!".

S>>>Интуиция подсказывает, что не все так просто. Что я забыл?

K>>Ты забыл УКАЗАТЬ ЗАДАЧУ.

S>Прозрачный TextBox для WinForms.


...и опять по джуниорски тупишь. Это твоё решение задачи. Сама задача какая?

S> Проверил существующие решения — ни одно нормально не работает.


"Все оба не работают", надо писать.
Увы, но говённый ВыньФормс был написан в спешке как тонкий враппер над тем, что Венда сама умеет делать. И отрисовка всей мишуры "зарыта" как раз в вендузовых DLL-ях.
Я боюсь, что простого решения твоей задачи попросту нет.
Хотя как вариант, попробуй FastColoredTextBox — там самостоятельная отрисовка — вдруг и бэк можно поменять??

S>Вроде кажется что ничего сложного нет, если не реализовывать выделение текста.


Нет, сложного там ДОХРЕНА! Даже не берись.
Re[4]: Свое поле для ввода текста - подводные камни
От: Kolesiki  
Дата: 04.05.21 18:33
Оценка: 9 (1)
Здравствуйте, Kolesiki, Вы писали:

K>Хотя как вариант, попробуй FastColoredTextBox — там самостоятельная отрисовка — вдруг и бэк можно поменять??


Работает, кстати!

Re[5]: Свое поле для ввода текста - подводные камни
От: Shmj Ниоткуда  
Дата: 04.05.21 20:05
Оценка:
Здравствуйте, Kolesiki, Вы писали:

K>>Хотя как вариант, попробуй FastColoredTextBox — там самостоятельная отрисовка — вдруг и бэк можно поменять??

K>Работает, кстати!

Но получается из пушки по воробьям Такой комбайн и просто ради прозрачного фона.
Re[6]: Свое поле для ввода текста - подводные камни
От: Kolesiki  
Дата: 05.05.21 14:47
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Здравствуйте, Kolesiki, Вы писали:


K>>>Хотя как вариант, попробуй FastColoredTextBox — там самостоятельная отрисовка — вдруг и бэк можно поменять??

K>>Работает, кстати!

S>Но получается из пушки по воробьям Такой комбайн и просто ради прозрачного фона.


И это говорит чел, который собирался САМ ВСЁ ПЕРЕПИСАТЬ?? Ну ты затейник! (тут "затейник" заменяет кое-что другое)
Как раз наоборот — я предлагаю простейший и быстрейший вариант контрола, который (как тебе кажется) решает твою задачу. Которую ты так и не озвучил, кстати.

Просто поверь на слово — за "простым видом" скрывается целая тонна логики. Особенно у ТекстБокса. Хотя если время девать некуда и прозрачный фон так важен — вперёд! Заодно потренируешься делать собственные контролы.
Re[5]: Свое поле для ввода текста - подводные камни
От: dmitry_npi Россия  
Дата: 07.05.21 18:23
Оценка:
Здравствуйте, Kolesiki, Вы писали:

K>Здравствуйте, Kolesiki, Вы писали:


K>>Хотя как вариант, попробуй FastColoredTextBox — там самостоятельная отрисовка — вдруг и бэк можно поменять??


K>Работает, кстати!


K>Image: lEhzWQ5.png


Кстати, если надо как на картинке, то не обязательно делать прямо-таки прозрачный фон. Если сзади не сложная картинка, то достаточно взять фон цвета задника ))
Атмосферная музыка — www.aventuel.net
Re[5]: Свое поле для ввода текста - подводные камни
От: Shmj Ниоткуда  
Дата: 18.05.21 21:49
Оценка:
Здравствуйте, Kolesiki, Вы писали:

K>>Хотя как вариант, попробуй FastColoredTextBox — там самостоятельная отрисовка — вдруг и бэк можно поменять??

K>Работает, кстати!

Вот когда чужое решение — то обязательно всплывает еще фигня, которая просто сводит все на нет. Это компонент не поддерживате:

1. Шрифты, кроме monospaced
2. Выравнивание, кроме как по левому краю.



Вроде ОК, но все это сводит на нет. И получается что проще таки писать свой.
Re[7]: Свое поле для ввода текста - подводные камни
От: Shmj Ниоткуда  
Дата: 18.05.21 21:51
Оценка:
Здравствуйте, Kolesiki, Вы писали:

K>Просто поверь на слово — за "простым видом" скрывается целая тонна логики. Особенно у ТекстБокса. Хотя если время девать некуда и прозрачный фон так важен — вперёд! Заодно потренируешься делать собственные контролы.


Получается что альтернатив просто нет. FastColoredTextBox не умеет даже шрифты, кроме monospaced.
Re[8]: Свое поле для ввода текста - подводные камни
От: Kolesiki  
Дата: 23.05.21 12:19
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Здравствуйте, Kolesiki, Вы писали:


K>>Просто поверь на слово — за "простым видом" скрывается целая тонна логики. Особенно у ТекстБокса. Хотя если время девать некуда и прозрачный фон так важен — вперёд! Заодно потренируешься делать собственные контролы.


S>Получается что альтернатив просто нет. FastColoredTextBox не умеет даже шрифты, кроме monospaced.


Ну вот, сначала тебе нужен был прозрачный фон. Теперь всплыли шрифты. Для однострочного текст-бокса. Ты задачу озвучишь или так и будешь пихать "текстбокс с фоном"??
Re[6]: Свое поле для ввода текста - подводные камни
От: Kolesiki  
Дата: 23.05.21 12:22
Оценка:
Здравствуйте, Shmj, Вы писали:

S>2. Выравнивание, кроме как по левому краю.


Ну прально! Потому что ЭЛЕМЕНТ ВВОДА ТЕКСТА у адекватных людей выровнен влево — к этому ты не можешь предъявлять претензии. Или ты за иврит беспокоишься? Ну тогда как насчёт вертикальных китайских письменов?
Re[9]: Свое поле для ввода текста - подводные камни
От: Shmj Ниоткуда  
Дата: 23.05.21 12:48
Оценка:
Здравствуйте, Kolesiki, Вы писали:

K>Ну вот, сначала тебе нужен был прозрачный фон. Теперь всплыли шрифты. Для однострочного текст-бокса. Ты задачу озвучишь или так и будешь пихать "текстбокс с фоном"??


А почему я должен озвучивать то, что нужны шрифты? Почему их должно не быть? Они по умолчанию есть в обычном TextBox, который меня устраивает всем, кроме возможности сделать прозрачный фон.
Re[7]: Свое поле для ввода текста - подводные камни
От: Shmj Ниоткуда  
Дата: 23.05.21 12:55
Оценка:
Здравствуйте, Kolesiki, Вы писали:

K>Ну прально! Потому что ЭЛЕМЕНТ ВВОДА ТЕКСТА у адекватных людей выровнен влево — к этому ты не можешь предъявлять претензии. Или ты за иврит беспокоишься? Ну тогда как насчёт вертикальных китайских письменов?


У обычного TextBox такая функция есть:

  Скрытый текст


Вообще нужно для примитивного графического редактора. Получается — проще всего перехватывать нажатия клавиш и просто рендерить. Может быть есть и готовый контрол, но вот как его найти? Иногда кажется, что поиск и проверка всего (а так же выявление скрытых багов и/или ограничений) — займет, ну, скажем, половину времени от того, чтобы написать свой.
Re[2]: Свое поле для ввода текста - подводные камни
От: alexzzzz  
Дата: 28.09.21 12:13
Оценка:
Здравствуйте, LuciferSaratov, Вы писали:

S>>Интуиция подсказывает, что не все так просто. Что я забыл?


LS>интуиция тебе правильно подсказывает.

LS>как минимум ты забыл Ctrl-Insert и Shift-Insert, Ctrl-Backspace и IAccessible/IAccessible2.
LS>наверняка ещё что-то есть.

Shift+Left / Shift+Right

Ctrl+Left / Ctrl+Right
Ctrl+Shift+Left / Ctrl+Shift+Right

Home / End
Shift+Home / Shift+End
Отредактировано 28.09.2021 12:27 alexzzzz . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.