![]() |
Модераторы: gambit, Partizan |
![]() ![]() ![]() |
|
Aline |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 470 Регистрация: 22.7.2005 Где: Таруса Репутация: нет Всего: нет |
Привет всем!
У меня есть таблица, в ней первая колонка - время в формате "HH:mm:ss". Я установила в свойстве DefaultCellStyle свойство Format = T и установила значение Null value = 00:00:00. При редактировании ячеек в этой колонке, получается, что я могу набирать совершенно любые символы с клавиатуры, единственное что при нажатии на Enter выскочит ошибка, типа данные неправильного типа. Так вот вопрос: можно ли как то сделать, чтобы ячейка была типа как MaskEdit? Т.е. задал формат и по маске можно ввести только допустимые символу? Как это сделать? Я работала с Borland, там таких проблем не было. Там я писала такой обработчик:
Можно ли здесь сделать подобное? |
|||
|
||||
Experimenter |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 430 Регистрация: 8.5.2007 Где: Уфа Репутация: 1 Всего: 17 |
Написал сначала, не подумавши. Видимо то, что я предложил, уже реализовано у тебя.
А возможно ли такое? Там есть события CellBeginEdit и CellEndEdit, получается, что в момент, когда пользователь редактирует ячейку, она недоступна для перехвата вводимых данных? Это сообщение отредактировал(а) Experimenter - 19.11.2007, 08:32 -------------------- public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){ if(zlo1 < zlo2) return zlo1; else if(zlo1 > zlo2) return zlo2; else throw new Exception("Kill yourself by the wall"); } |
|||
|
||||
Aline |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 470 Регистрация: 22.7.2005 Где: Таруса Репутация: нет Всего: нет |
Спасибо, попробую
![]() |
|||
|
||||
Aline |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 470 Регистрация: 22.7.2005 Где: Таруса Репутация: нет Всего: нет |
Experimenter, по-моему ты мне давал до этого ссылку в RSDN, очень дельная статья там. Скачала исходники. В них вроде всё работает. Попробовала под себя переделать не получается :-(
Задача в том, чтобы встроить в ячейку таблицы MaskEdit Это сообщение отредактировал(а) Aline - 20.11.2007, 11:40 |
|||
|
||||
Experimenter |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 430 Регистрация: 8.5.2007 Где: Уфа Репутация: 1 Всего: 17 |
Aline, если и давал, то уже не помню. В любом случае здесь же, на RSDN подробно описано. Раздел "Размещение в ячейке пользовательского UserControl". Если мы об одном и том же, тогда давай свой код, сравним.
-------------------- public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){ if(zlo1 < zlo2) return zlo1; else if(zlo1 > zlo2) return zlo2; else throw new Exception("Kill yourself by the wall"); } |
|||
|
||||
Aline |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 470 Регистрация: 22.7.2005 Где: Таруса Репутация: нет Всего: нет |
Да, об одном и том же. Только у меня почему то не получается :-(
Код в процессе очередной переработки, поэтому сейчас я его выложить не могу. В программе-тесте компонента у меня появлялось поле для ввода значения в формате времени ("00:00:00"), значение я вводила, а потом после нажатия на Enter в поле все равно стояла строка по умолчанию "00:00:00" |
|||
|
||||
Aline |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 470 Регистрация: 22.7.2005 Где: Таруса Репутация: нет Всего: нет |
Не смогла загрузить файл, поэтому прилагаю код:
Здесь библиотека сделана на основе примера из RSDN, только у меня одно поле типа MaskEdit и маска у него должна быть "00:00:00". Experimenter, может быть посмотришь код? Где то я делаю что-то не так... Когда в проекте использую колонку типа DataGridViewPassportColumn (я её не переименовала), значение у меня не устанавливается |
|||
|
||||
Experimenter |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 430 Регистрация: 8.5.2007 Где: Уфа Репутация: 1 Всего: 17 |
да, осталась самая малость, InitializeComponent() показать.
там у тебя с исходником много отличий? Это сообщение отредактировал(а) Experimenter - 20.11.2007, 18:47 -------------------- public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){ if(zlo1 < zlo2) return zlo1; else if(zlo1 > zlo2) return zlo2; else throw new Exception("Kill yourself by the wall"); } |
|||
|
||||
Experimenter |
|
||||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 430 Регистрация: 8.5.2007 Где: Уфа Репутация: 1 Всего: 17 |
Aline, не понравилась одна строчка в class TimeCtrConverter
Это сообщение отредактировал(а) Experimenter - 20.11.2007, 21:01 -------------------- public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){ if(zlo1 < zlo2) return zlo1; else if(zlo1 > zlo2) return zlo2; else throw new Exception("Kill yourself by the wall"); } |
||||||||||||
|
|||||||||||||
Aline |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 470 Регистрация: 22.7.2005 Где: Таруса Репутация: нет Всего: нет |
Experimenter, спасибо за ответы, однозначно "+" в твою репутацию
![]() Что касается кода: насчет форматирования - там всё в порядке. Проблема в этом куске:
Когда первый раз туда попадаешь, почему то _psForEditSession=NULL. Т.е. получается, что SetupControls не отработал перед этим? А если делаю вот так:
тогда при первом изменении в ячейке ничего не меняется, а поменяется если ещё раз туда войдешь и введешь заново значение, причем это только в первый раз так, потом в других ячейках всё нормально отрабатывает Добавлено через 2 минуты и 36 секунд А с исходником у меня немного отличий: исключила 2 ненужных компонента вместе с Label и изменила маску у MaskEdit |
||||
|
|||||
Experimenter |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 430 Регистрация: 8.5.2007 Где: Уфа Репутация: 1 Всего: 17 |
Так проблема, на мой взгляд, как раз в том, что когда ты объявляешь
-------------------- public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){ if(zlo1 < zlo2) return zlo1; else if(zlo1 > zlo2) return zlo2; else throw new Exception("Kill yourself by the wall"); } |
||||||||
|
|||||||||
Aline |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 470 Регистрация: 22.7.2005 Где: Таруса Репутация: нет Всего: нет |
Это всё я исправила, это было от невнимательности
![]() Но тем не менее всё равно с первого раза не могу установить значение, только со второго. А дальше уже всё отлично вводится.... Вот мой код:
|
|||
|
||||
Experimenter |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 430 Регистрация: 8.5.2007 Где: Уфа Репутация: 1 Всего: 17 |
а строчку
Хотя непонятно, где они в программе пересекаются. Это сообщение отредактировал(а) Experimenter - 21.11.2007, 10:08 -------------------- public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){ if(zlo1 < zlo2) return zlo1; else if(zlo1 > zlo2) return zlo2; else throw new Exception("Kill yourself by the wall"); } |
||||
|
|||||
Aline |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 470 Регистрация: 22.7.2005 Где: Таруса Репутация: нет Всего: нет |
Experimenter, меня тоже строка
смущала, но думаю, работает же у них это в примере, хотя конечно интересно почему так написали. Вот сейчас попробовала поставить не ConvertToString(value), а ConvertTo(value) - выдает ошибку. Так что не в этом дело. Буду копать дальше DEFAULT_FORMAT_STRING менять пробовала, как ты написал - результат такой же, поэтому вернула назад... |
|||
|
||||
Experimenter |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 430 Регистрация: 8.5.2007 Где: Уфа Репутация: 1 Всего: 17 |
Добавлено через 1 минуту и 21 секунду И пробежаться по коду отладчиком в пошаговом режиме, посмотреть, где и что сбой дает... -------------------- public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){ if(zlo1 < zlo2) return zlo1; else if(zlo1 > zlo2) return zlo2; else throw new Exception("Kill yourself by the wall"); } |
|||
|
||||
Aline |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 470 Регистрация: 22.7.2005 Где: Таруса Репутация: нет Всего: нет |
лобовое решение
дало нужный результат |
|||
|
||||
Experimenter |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 430 Регистрация: 8.5.2007 Где: Уфа Репутация: 1 Всего: 17 |
Поздравляю! Как пелось в одной песне: Если долго мучиться, что-нибудь получится
-------------------- public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){ if(zlo1 < zlo2) return zlo1; else if(zlo1 > zlo2) return zlo2; else throw new Exception("Kill yourself by the wall"); } |
|||
|
||||
dosyus |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 27.7.2010 Репутация: нет Всего: нет |
Здравствуйте, я посмотрел ваших пример, похож как мою, но мне размещать ячейку текстбокс что б в ячейке была вертикальная скрол, поможите...
|
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Разработка Windows Forms | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |