![]() |
Модераторы: gambit, Partizan |
![]() ![]() ![]() |
|
St33l |
|
|||
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 16.6.2007 Репутация: нет Всего: нет |
Такая проблема: есть textbox. пользователь вводит в него некоторое числовое значение. это числовое значение присваивается некотрому объекту, который выступает в качестве датасорса для таблицы. В зависимости от значения соответственно в таблице тоже меняются числа.
а проблема вот в чем: когда я ввожу какое-нибудь число в текстбокс и жму обновить, то в таблице ничего не меняется, но достаточно скроллбаром (таблица длинная) утащить ячейку за поле видимости и притащить обратно, как я вижу новое значение. по кнопке обновить идет просто присваивание датасорса таблице. как обойти это? может какой-то метод есть, а я не знаю ) |
|||
|
||||
jonie |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 5 Всего: 118 |
вам нужно в вашем объекте реализовать INotifyPropertyChanged.
пример в аттаче. Присоединённый файл ( Кол-во скачиваний: 3 ) ![]() -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
St33l |
|
|||
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 16.6.2007 Репутация: нет Всего: нет |
как должен работать пример? я вводу в текстбокс значение, щелкаю на таблицу и там оно обновляется.
после того, как я из кода вырезал упоминания о INotifyPropertyChanged и т.п., то работа не изменилась. |
|||
|
||||
jonie |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 5 Всего: 118 |
St33l, просто я привязал к одному BindingSource-у, привяжите к двум разным BindingSource-ам грид и тексто бокс и всё будет как у вас.
Обновленный пример в аттаче. (переходите фокусом ввода в другой контрол, не в грид - иначе грид перезапросит данные) UPD: Впрочем и предыдущий пример работает, если вы будете ставить НЕ на грид фокус (добавьте еще ченить в форму и попробуйте) Это сообщение отредактировал(а) jonie - 6.10.2009, 09:44 -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
St33l |
|
|||
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 16.6.2007 Репутация: нет Всего: нет |
чет не то у меня. смотрите, как выглядит в реале моя форма:
![]() 1. В программе есть 5 объектов (А-E класса Shihta (из них 1 наследник ее с перегруженным свойством)) 2. Есть 2 List-а. lstShihtatmp и lstShihta. В певром находятся все 5 этих объектов, а во втором 2-х из них нет (не нужны просто). 3. Первая таблица черпает данные из lstShihtatmp, а вторая lstShihta (через биндингсорсы этих листов, 2 биндинга выходит). Мои затруднения: Видите колонку П.П.П.? Рассмотрим ПУТ и ЖРС. Когда я меняю значение П.П.П. у ПУТ, то автоматически пересчитывается (в ручную не вводится) значение П.П.П, у ЖРС. Я знаю, что оно пересчиталось, но визуально этого не вижу, пока не щелкну на эту ячейку или не уведу скроллом ячейку из поля видимости. Почему так происходит и как исправить? Это сообщение отредактировал(а) St33l - 8.10.2009, 09:25 |
|||
|
||||
jonie |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 5 Всего: 118 |
St33l, а я грю что надо наследоваться от нужного.
Кроме того List<T> также не наследует INotifyPropertyChanged - используйте BindingList<T>, в item-ы которого должны быть запиханы также классы, наследованные от INotifyPropertyChanged. И воообще при объяснении наследования - сделайте диаграмму, на слух тяжело воспринимать. -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
St33l |
|
|||
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 16.6.2007 Репутация: нет Всего: нет |
1. изменил List на BindingList
2. Класс Shihta изменил как в примере:
Теперь после ввода в ячейку П.П.П. и выхода из нее ее значение тут же возвращается на старое. Это только для П.П.П., для других такое не происходит, потому в классе для них ничего не менял. |
|||
|
||||
St33l |
|
|||
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 16.6.2007 Репутация: нет Всего: нет |
виноват, нашел ошибку в коде выше. сейчас так:
Ничего не сбрасывает. но после ввода числа в П.П.П. например ПУТа, то значение П.П.П, для ЖРМ пересчитывается, но все так же не отображается, пока не кликнешь в ячейку или не проскроллить. |
|||
|
||||
uranpro |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 571 Регистрация: 7.5.2008 Где: Moscow city Репутация: нет Всего: 1 |
А нельзя самому обновить ее ? задать значение, примерно:
-------------------- I want a perfect soul |
|||
|
||||
St33l |
|
|||
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 16.6.2007 Репутация: нет Всего: нет |
Не, оно вычисляемое. Зависит от того, что ввести в п.п.п. пут
|
|||
|
||||
jonie |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 5 Всего: 118 |
St33l, сделайте и выложите минимальный пример. У вас где-то 100% косяк)
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
St33l |
|
|||
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 16.6.2007 Репутация: нет Всего: нет |
Выкладываю пример. В данном архиве код, который отражает мою ситуацию.
Присоединённый файл ( Кол-во скачиваний: 1 ) ![]() |
|||
|
||||
St33l |
|
|||
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 16.6.2007 Репутация: нет Всего: нет |
А здесь код уже подредактирован в соответствии с рекомендациями jonie
Это сообщение отредактировал(а) St33l - 9.10.2009, 10:35 Присоединённый файл ( Кол-во скачиваний: 2 ) ![]() |
|||
|
||||
jonie |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 5 Всего: 118 |
ну вот.
меняйте класс на это:
и все будет как вы хотите. -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
St33l |
|
|||
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 16.6.2007 Репутация: нет Всего: нет |
заработало ) спасибо большое. еще такой вопрос: сейчас после нажатия кнопки "заполнить" П.П.П. перестало считаться. считается только после того, как ввести что-то в П.П,П. объекта 1.
|
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [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. |