|
Комп_Оратор)
|
|||||||||||
dataGreedVew - bug-a или feature-?31.01.2012, 18:00. Показов 1202. Ответов 12
Метки нет (Все метки)
//vs2008
//добавляем на форму в дизайнере dataGridView1 //там же добавляем в dataGridView1 три столбца add columns //получаем табличку из 3-х ячеек по горизонтали - Ok! //сразу выберите размер видимой области что бы поместилось 3-5 Rows (строк таблицы) //Добавляем кнопку с таким вот кликом
//теперь закоментируем первую строчку в обработчике
Добавлено через 4 часа 53 минуты Забавно, не уж-то это только у меня такой глюк
0
|
|||||||||||
| 31.01.2012, 18:00 | |
|
Ответы с готовыми решениями:
12
Streaming cluster replication bug or ne bug BUG или фича с PasswordChar Bug NetBeans или я тупой |
|
623 / 467 / 57
Регистрация: 28.01.2011
Сообщений: 605
|
|
| 31.01.2012, 19:04 | |
|
IGPIGP, судя по всему это не глюк, просто если включена возможность добавления новых строк в грид, то последняя строка, которая служит для вставки новых строчек, тоже считается элементом коллекции DataGridView::Rows. То есть если возможность добавления столбцов будет включена, то изначально в гриде значение Rows->Count будет равно 1, следовательно последний код добавит одну строку, так что Rows[1] окажется валидным элементом, и будет записана информация в эту последнюю строчку, которая нужна для вставки; а если столбцы добавлять нельзя, тогда Rows->Count будет 0, и при исполнении последнего приведённого кода вылетит ошибка времени выполнения, говорящая о том, что имеется выход за рамки коллекции DataGridView::Rows.
0
|
|
|
Комп_Оратор)
|
|||||||
| 31.01.2012, 21:31 [ТС] | |||||||
|
Дело в том, что ошибок то не вылетает. Я специально привел код в котором раскрасил ячейку заполняемую значением, что бы получить максимум впечатлений. Первый код работает нормально, а во втором:
2,1; 3,1; 4,1 и т.д.
0
|
|||||||
|
623 / 467 / 57
Регистрация: 28.01.2011
Сообщений: 605
|
||
| 31.01.2012, 21:58 | ||
|
0
|
||
|
Комп_Оратор)
|
|
| 31.01.2012, 22:29 [ТС] | |
|
Последняя строка не остается неизменной а заполняется значением, а не должна бы. Посмотрите как первый вариант работает - нормально работает. Добавляем по 2 строки и все окей - обновляется только клетка 1,1.
ДатаГрид - индексно адресуется как 2-мерный массив (должен), но когда добавляется 1 строка (я долго не экспериментировал, но это вроде единственный случай) обновляется последняя добавленная!
0
|
|
|
623 / 467 / 57
Регистрация: 28.01.2011
Сообщений: 605
|
|||||||||||||||||||||
| 31.01.2012, 22:48 | |||||||||||||||||||||
|
IGPIGP, я имел ввиду то, что если включена возможность добавления записей в грид ручками на форме, тогда содержимое коллекции Rows всегда выглядит следующим образом:
Более того, можно попробовать написать в тот метод ещё нечто вроде
1
|
|||||||||||||||||||||
|
Комп_Оратор)
|
||
| 31.01.2012, 23:09 [ТС] | ||
![]() Вернемся к цитате: "сначала заполняется последняя строка" - и это единственный раз правильно, т.к. строк уже 2-е (была одна и + один add)? а поскольку стартовый индекс ноль, [1][1] вторая сверху, вторая слева, и это в обоих вариантах одинаково при первом нажатии. Со второго нажатия первый вариант работает верно [1][1], а второй обновляет (перемещает посути [1][1] вконец), ячейку с координатами rows[нижний] cells[1] Вообще обещаю, сегодня пока будет возможность, и завтра перечитаю Ваш ответ, что-то я в нем не понял, а это значит, что-то в нем есть
0
|
||
|
623 / 467 / 57
Регистрация: 28.01.2011
Сообщений: 605
|
|||||||||||||||||||||||
| 31.01.2012, 23:37 | |||||||||||||||||||||||
|
В самом начале, при создании грида, контейнер строк у грида имеет вид такой:
Мы нажимаем button, что происходит — добавляется строка с идентификатором Row_1, прямо перед элементом с ID = "TheLastOne". Контейнер строк Rows выглядит так:
Теперь нажимаем второй раз на button, что получается теперь — опять же, перед последним элементом TheLastOne добавляется новая строчка, то есть относительное положение элемента TheLastOne в контейнере не изменилось, но перед ним появилась новая строка. Итого контейнер строк выглядит так:
И как мы сейчас установили, при каждом последовательном добавлении строки мы будем иметь контейнер Rows в следующем виде
То есть в первом случае, как Вы и сказали, обновляется только вторая строчка, второй столбец. А во втором случае, получается так, что мы затрагиваем этот элемент, который сначала был на позиции[1][1], но при последующих вставках он просто перемещается выше, плюс к тому, начиная со второго вызова обработчика, как и положено, обновляется вторая строчка, второй столбец.
1
|
|||||||||||||||||||||||
|
Комп_Оратор)
|
|
| 01.02.2012, 00:13 [ТС] | |
|
У одного популярного римского сенатора была фраза которая звучала как-то так:
"Если это все и неправда, то придумано очень хорошо!". Не подумайте, что язвлю, наоборот примите как комплимент . Скорее всего это содержит логику поведения dataGreedVeW. Но не оправдывает. Ведет то она себя нехорошо. Как объяснить расхождение в поведении после первого клика пользуясь Вашей логикой? В первом случае у нас первым кликом инициализируется тоже [1][1] и в первый раз оно совпадает с [1][last_one]. Если он тупит и не может выпустить проинициализированную ячейку в last_one, то и при добавлении двух ячеек должна держать ее в последней строке зубами. Забавно, кстати то, что я с dataGreedVew работаю давненько, но ничего подобного не замечал. Вчера когда обнаружил эту feature посидел ночью чуток проверяя, как в последней проге дела. Слава богу везде сначала определяется размерность таблицы, а потом заполнение в цикле. Вроде везде все работает верно. Однако буду ещё проверять, сомнения есть...Сейчас уже почти сплю. Впрочем до 1-00 все равно не светит. Так, что если не устали меня переубеждать - попробуйте, еще... хотя лучше - завтра бо голова у меня сейчас - ясень. ![]() Если перечитав завтра окажется, что я протупил и у Вас все логично, буду просить прощения, но это будет завтра
0
|
|
|
623 / 467 / 57
Регистрация: 28.01.2011
Сообщений: 605
|
||
| 01.02.2012, 00:23 | ||
На всякий пожарный, просто чтобы не перечитывать слишком много текста, приведу маленькую сводку, как оно получается на деле. В первом случае, когда мы добавляем сразу две строки и вносим изменения в ячейку за номером [1][1], то последняя строка вообще не изменяется(она представляет собой особый случай, как мы выяснили), поэтому при дальнейших действиях никаких странностей(в последней строке ничего не появляется, потому что мы её не трогали).А при добавлении одной строки, мы в первый раз "задеваем" этот особый объект "последней строки", вот он и волочится вслед за всеми остальными строками со своими изменениями на последней позиции контейнера Rows. Мне кажется, всё логично
0
|
||
|
Комп_Оратор)
|
|||||||
| 01.02.2012, 17:49 [ТС] | |||||||
|
Что-же касается вопросов "Почему она так делает?" и "Правильно ли она делает?" - не убедили Вы меня Ma3a. Проиллюстрирую, еще так:
Жмем button2 раз 5. Всё правильно. А теперь парами т.е. Жмем button1, жмем button2. И так 5 раз. Результат другой. Но в коде обр. каждой кнопки видно без затей - одна добавляет строку, вторая присваивает УКАЗАННУЮ ПРЯМО ячейку .И обычно все получает именно так, только не в данном случае... Хоть бы написали, где-то We're proud to present the outstanding feature of... Может плохо читал. У меня английский - так-себе...
0
|
|||||||
|
623 / 467 / 57
Регистрация: 28.01.2011
Сообщений: 605
|
|||||
| 01.02.2012, 18:16 | |||||
![]() ![]()
1
|
|||||
|
Комп_Оратор)
|
|
| 01.02.2012, 18:25 [ТС] | |
|
Спасибо, еще раз Ma3a, стало быть DataGridView не только у меня такой. Почему ни-кто больше не высказался - не знаю... Наверное что-то знают, но молчат
![]() Тема закрыта.
0
|
|
| 01.02.2012, 18:25 | |
|
Помогаю со студенческими работами здесь
13
Feature.xml slider jquery-feature-carousel Определение признаков (feature selection) Ignoring Portion Of Document That Uses A Feature From Another Version Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам
Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|