Если просто перехватывать нажатые клавиши и рендерить текст + по таймеру рендерить мигающую черточку (курсор). Так ли все просто или есть подводные камни?
Возьмем минимальный вариант как Paint.Net — там нельзя выделять текст.
Вот что еще вижу навскидку:
1. Обработка клавиш вперед/назад (курсор вклинивать между буквами).
2. Обработка удаления символа (бекспейс и делит).
3. Обработка нажатия мыши и вклинивание курсора в указанное место.
4. Обработка клавиш Ctrl+C.
Интуиция подсказывает, что не все так просто. Что я забыл?
Здравствуйте, Shmj, Вы писали:
S>Интуиция подсказывает, что не все так просто. Что я забыл?
интуиция тебе правильно подсказывает.
как минимум ты забыл Ctrl-Insert и Shift-Insert, Ctrl-Backspace и IAccessible/IAccessible2.
наверняка ещё что-то есть.
Re[3]: Свое поле для ввода текста - подводные камни
Здравствуйте, Shmj, Вы писали:
S>Здравствуйте, Kolesiki, Вы писали:
K>> Если ты влез на уровень "мигающей чёрточки", ты явно делаешь что-то не так.
S>Не факт...
Факт. Переписывать целый контрол только чтобы был виден бэк?? Такой логикой ты дойдёшь до классического "переписать всю Венду!".
S>>>Интуиция подсказывает, что не все так просто. Что я забыл? K>>Ты забыл УКАЗАТЬ ЗАДАЧУ.
S>Прозрачный TextBox для WinForms.
...и опять по джуниорски тупишь. Это твоё решение задачи. Сама задача какая?
S> Проверил существующие решения — ни одно нормально не работает.
"Все оба не работают", надо писать.
Увы, но говённый ВыньФормс был написан в спешке как тонкий враппер над тем, что Венда сама умеет делать. И отрисовка всей мишуры "зарыта" как раз в вендузовых DLL-ях.
Я боюсь, что простого решения твоей задачи попросту нет.
Хотя как вариант, попробуй FastColoredTextBox — там самостоятельная отрисовка — вдруг и бэк можно поменять??
S>Вроде кажется что ничего сложного нет, если не реализовывать выделение текста.
Нет, сложного там ДОХРЕНА! Даже не берись.
Re[4]: Свое поле для ввода текста - подводные камни
Здравствуйте, Kolesiki, Вы писали:
K>>Хотя как вариант, попробуй FastColoredTextBox — там самостоятельная отрисовка — вдруг и бэк можно поменять?? K>Работает, кстати!
Но получается из пушки по воробьям Такой комбайн и просто ради прозрачного фона.
Re[6]: Свое поле для ввода текста - подводные камни
Здравствуйте, Shmj, Вы писали:
S>Здравствуйте, Kolesiki, Вы писали:
K>>>Хотя как вариант, попробуй FastColoredTextBox — там самостоятельная отрисовка — вдруг и бэк можно поменять?? K>>Работает, кстати!
S>Но получается из пушки по воробьям Такой комбайн и просто ради прозрачного фона.
И это говорит чел, который собирался САМ ВСЁ ПЕРЕПИСАТЬ?? Ну ты затейник! (тут "затейник" заменяет кое-что другое)
Как раз наоборот — я предлагаю простейший и быстрейший вариант контрола, который (как тебе кажется) решает твою задачу. Которую ты так и не озвучил, кстати.
Просто поверь на слово — за "простым видом" скрывается целая тонна логики. Особенно у ТекстБокса. Хотя если время девать некуда и прозрачный фон так важен — вперёд! Заодно потренируешься делать собственные контролы.
Re[5]: Свое поле для ввода текста - подводные камни
Здравствуйте, Kolesiki, Вы писали:
K>Здравствуйте, Kolesiki, Вы писали:
K>>Хотя как вариант, попробуй FastColoredTextBox — там самостоятельная отрисовка — вдруг и бэк можно поменять??
K>Работает, кстати!
K>Image: lEhzWQ5.png
Кстати, если надо как на картинке, то не обязательно делать прямо-таки прозрачный фон. Если сзади не сложная картинка, то достаточно взять фон цвета задника ))
Здравствуйте, Kolesiki, Вы писали:
K>>Хотя как вариант, попробуй FastColoredTextBox — там самостоятельная отрисовка — вдруг и бэк можно поменять?? K>Работает, кстати!
Вот когда чужое решение — то обязательно всплывает еще фигня, которая просто сводит все на нет. Это компонент не поддерживате:
1. Шрифты, кроме monospaced
2. Выравнивание, кроме как по левому краю.
Вроде ОК, но все это сводит на нет. И получается что проще таки писать свой.
Re[7]: Свое поле для ввода текста - подводные камни
Здравствуйте, Kolesiki, Вы писали:
K>Просто поверь на слово — за "простым видом" скрывается целая тонна логики. Особенно у ТекстБокса. Хотя если время девать некуда и прозрачный фон так важен — вперёд! Заодно потренируешься делать собственные контролы.
Получается что альтернатив просто нет. FastColoredTextBox не умеет даже шрифты, кроме monospaced.
Re[8]: Свое поле для ввода текста - подводные камни
Здравствуйте, Shmj, Вы писали:
S>Здравствуйте, Kolesiki, Вы писали:
K>>Просто поверь на слово — за "простым видом" скрывается целая тонна логики. Особенно у ТекстБокса. Хотя если время девать некуда и прозрачный фон так важен — вперёд! Заодно потренируешься делать собственные контролы.
S>Получается что альтернатив просто нет. FastColoredTextBox не умеет даже шрифты, кроме monospaced.
Ну вот, сначала тебе нужен был прозрачный фон. Теперь всплыли шрифты. Для однострочного текст-бокса. Ты задачу озвучишь или так и будешь пихать "текстбокс с фоном"??
Re[6]: Свое поле для ввода текста - подводные камни
Здравствуйте, Shmj, Вы писали:
S>2. Выравнивание, кроме как по левому краю.
Ну прально! Потому что ЭЛЕМЕНТ ВВОДА ТЕКСТА у адекватных людей выровнен влево — к этому ты не можешь предъявлять претензии. Или ты за иврит беспокоишься? Ну тогда как насчёт вертикальных китайских письменов?
Re[9]: Свое поле для ввода текста - подводные камни
Здравствуйте, Kolesiki, Вы писали:
K>Ну вот, сначала тебе нужен был прозрачный фон. Теперь всплыли шрифты. Для однострочного текст-бокса. Ты задачу озвучишь или так и будешь пихать "текстбокс с фоном"??
А почему я должен озвучивать то, что нужны шрифты? Почему их должно не быть? Они по умолчанию есть в обычном TextBox, который меня устраивает всем, кроме возможности сделать прозрачный фон.
Re[7]: Свое поле для ввода текста - подводные камни
Здравствуйте, Kolesiki, Вы писали: K>Ну прально! Потому что ЭЛЕМЕНТ ВВОДА ТЕКСТА у адекватных людей выровнен влево — к этому ты не можешь предъявлять претензии. Или ты за иврит беспокоишься? Ну тогда как насчёт вертикальных китайских письменов?
У обычного TextBox такая функция есть:
Скрытый текст
Вообще нужно для примитивного графического редактора. Получается — проще всего перехватывать нажатия клавиш и просто рендерить. Может быть есть и готовый контрол, но вот как его найти? Иногда кажется, что поиск и проверка всего (а так же выявление скрытых багов и/или ограничений) — займет, ну, скажем, половину времени от того, чтобы написать свой.
Re[2]: Свое поле для ввода текста - подводные камни
Здравствуйте, LuciferSaratov, Вы писали:
S>>Интуиция подсказывает, что не все так просто. Что я забыл?
LS>интуиция тебе правильно подсказывает. LS>как минимум ты забыл Ctrl-Insert и Shift-Insert, Ctrl-Backspace и IAccessible/IAccessible2. LS>наверняка ещё что-то есть.