| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Разработка Windows Forms > ListView. показать редактор item'a |
| Автор: _hunter 13.3.2008, 20:07 | ||
| Добрый день. Пытаюсь сделать custom-редактор для item'ов/subItem'ов. Для этого в обработчике MouseDown пытаюсь показать TextBox:
_fieldsEditor.Show() вызывется, но TextBox не появляется :( Что я делаю не так/как это исправить? С уважением... |
| Автор: vponomarov 14.3.2008, 10:57 | ||
попробуй писать что-то вроде такого:
если не хочешь, чтобы каждый раз создавался TextBox, то после окончания редактирования нужно его убирать из контролов листБокса |
| Автор: _hunter 14.3.2008, 11:47 |
| начал появляться, но есть одна проблема: этот TextBox почему-то выше (его height больше) чем высота строки ListView'a. причем это происходит уже в момент _fieldsEditor.Bounds = listViewSubItem.Bounds: после присваивания listViewSubItem.Bounds.Height == 14, а _fieldsEditor.Bounds.Height == 20... |
| Автор: vponomarov 14.3.2008, 12:23 |
| _hunter, высота текстБоха зависит от размера шрифта и в зависимости от него(размера) не может быть меньше определенной величины. попробуй поиграться с этим параметром |
| Автор: _hunter 14.3.2008, 13:54 |
| и еще вопрос: я хочу чтобы сразу после показа этого TextBox'а в него можно было вводить текст. для этого пишу: bool focused = _fieldsEditor.Focus(); focused == true, но курсор для ввода текста не появляется... |
| Автор: _hunter 14.3.2008, 14:22 |
| и насчет шрифта: я есть какой-то другой способ уменьшить высоту (или это одтельной темой лучше спросить) -- приемлемая высота получается только при 5-м размере шрифта, что очень мало... |
| Автор: vponomarov 14.3.2008, 14:43 | ||
странно. я попробовал такой код:
работают оба варианта: и Focus() и ActiveControl. Добавлено через 4 минуты и 44 секунды а на счет высоты: сделай свойство Multiline=true и сможешь выставлять любую высоту |
| Автор: _hunter 14.3.2008, 15:29 | ||
ничего не понимаю... делаю так:
и нет фокуса... |
| Автор: CYBERDREAM 14.3.2008, 15:38 | ||
напиши просто:
Добавлено через 3 минуты и 20 секунд прошу прощения, не верно Добавлено через 6 минут и 29 секунд кажется знаю в чем проблема. Повесь обработчки не на MouseDown, а на MouseUp. В похожем случае это решило проблему с фокусом |
| Автор: vponomarov 14.3.2008, 16:21 | ||
да, может быть и в этом проблема. я бы вообще повесил на MouseClick или даже MouseDoubleClick |
| Автор: _hunter 14.3.2008, 16:33 |
| попробовал и MouseUp и MouseClick -- курсор появляться не хочет и клавиши нажимаются в ListView'е :( |
| Автор: vponomarov 14.3.2008, 17:50 | ||
вот этот код точно работает, только что не поленился проверил!
если нужно чтобы редактировались только субИтемы - замени hti.Item на hti.SubItem |
| Автор: CYBERDREAM 14.3.2008, 17:56 |
| 2 vponomarov рыли мы в верном направлении. Просто обработчик был подписан на MouseDown )) |
| Автор: vponomarov 14.3.2008, 18:10 |
| 2 CYBERDREAM возможно и в этом была проблема но там изначально в коде много чего неправильного на мой взгляд было... ну да главное, что проблема решена |