Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> изменение строк TextBox в runtime, строки, которые отображаются в контроле 
:(
    Опции темы
babutta
Дата 16.1.2007, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 18.12.2006

Репутация: нет
Всего: нет



Здрасти всем.
не смог найти в форуме и сам не допер как в runtime изменить строки ListBox  smile 
в листбокс добавляю объекты, у которых преопределил ToString() 
я так понял отсюда ListBox берет текст для отображения в своем списке...
добавляется все на ура, свои объекты тоже редактирую без проблем, 
в том числе и изменяется строка возвращаемая методо ToString(), но строки в списке как были на момент их создания, такими и остаются.

как изменить строки списка листбокса программно?

помогите плиззз
PM MAIL   Вверх
babutta
Дата 16.1.2007, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 18.12.2006

Репутация: нет
Всего: нет



Ой!... сорри, ошибся в заголовке темы вместо ListBox написал TextBox

как исправить не знаю  smile 
PM MAIL   Вверх
Tror
Дата 16.1.2007, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 29.4.2005
Где: Кишинёв

Репутация: 2
Всего: 4



можно код в студию, а то не совсем понятно что ты делаешь и что хочешь получить
--------------------
Не говори всегда что знаешь, но знай всегда что говоришь. /Клавдий/============================================Кто может -- тот делает. Кто не может... тот получает сертификат MCSE ;)
PM MAIL ICQ   Вверх
mr.DUDA
Дата 16.1.2007, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 24
Всего: 232



Да скорее всего придётся руками менять. Что-то я подходящего интерфейса не нахожу  smile 


--------------------
user posted image
PM MAIL WWW   Вверх
babutta
Дата 17.1.2007, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 18.12.2006

Репутация: нет
Всего: нет



Цитата(Tror @  16.1.2007,  19:50 Найти цитируемый пост)
можно код в студию, а то не совсем понятно что ты делаешь и что хочешь получить 


вот например есть такой простенький класс
Код

    public class Element
    {
        private string name;
        public string Name { get { return this.name; } set { this.name = value; } }
        public Element(string Name) { name = Name; }
        public override string ToString() { return this.name; }
    }


создаю форму, кидаю на нее ListBox, кнопку добавления елемента в листбокс, кнопку редактирования елемента и текстбокс, из которого берется строка для присвоения елементу нового значения
Код

        private void buttonAdd_Click(object sender, EventArgs e)
        {
            Element element = new Element("new");
            listBox1.Items.Add(element);
        }

        private void buttonEdit_Click(object sender, EventArgs e)
        {
            Element element = (Element)listBox1.SelectedItem;
            element.Name = textBox1.Text;
        }


причем ListBox1.Text хранит верное значение, т.е. если элемент списка был отредактирован, поменяли ему св-во Name, то при выделении его в списке в ListBox1.Text попадает значение его св-ва Name, но на экране по прежнему отображается "new"  smile 

перепробовал всякое, но ничего штатного не нашел... только если наверное перехватывать отрисовку итема листбокса или что-то извращенное типа копировать измененный объект в новый, удалять из листбокса старый и вставлять в список на  место удаленного новый, отредактированный объект...

PM MAIL   Вверх
NET_or_not_NET
Дата 18.1.2007, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 10.1.2007

Репутация: нет
Всего: 1



Попробуйте так:

Код

private void buttonEdit_Click(object sender, EventArgs e)
        {
            ...
            // добавить следующее
            listBox1.Items[listBox1.SelectedIndex] = element.Name;            
        }


Кстати у меня вопрос ?
я так понимаю что создаются два разных объекта класса Element с одинаковыми именами но в разных областях видимости

Это сообщение отредактировал(а) NET_or_not_NET - 18.1.2007, 13:18
PM MAIL   Вверх
Tror
Дата 18.1.2007, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 29.4.2005
Где: Кишинёв

Репутация: 2
Всего: 4



babutta, что-то я действительно туплю. у меня тоже не получается решить это без каких либо извратов.

Код

            Element el = (Element)listBox1.SelectedItem;

            el.Name = "new elem";
            listBox1.Items[listBox1.SelectedIndex] = el;

что-то типа этого

NET_or_not_NET, 
Код

listBox1.Items[listBox1.SelectedIndex] = element.Name; 

просто вставит в листбокс на место старого объекта типа Element новый типа String.

Цитата(NET_or_not_NET @  18.1.2007,  13:17 Найти цитируемый пост)
я так понимаю что создаются два разных объекта класса Element с одинаковыми именами но в разных областях видимости

нет. в первый раз действительно создается объект, а во второй раз мы получаем на него ссылку
--------------------
Не говори всегда что знаешь, но знай всегда что говоришь. /Клавдий/============================================Кто может -- тот делает. Кто не может... тот получает сертификат MCSE ;)
PM MAIL ICQ   Вверх
NET_or_not_NET
Дата 18.1.2007, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 10.1.2007

Репутация: нет
Всего: 1



Цитата

просто вставит в листбокс на место старого объекта типа Element новый типа String.


Цитата

а во второй раз мы получаем на него ссылку 


Абсолютно точно это я просто торможу  smile 

Это сообщение отредактировал(а) NET_or_not_NET - 18.1.2007, 14:47
PM MAIL   Вверх
babutta
Дата 18.1.2007, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 18.12.2006

Репутация: нет
Всего: нет



Цитата(Tror @  18.1.2007,  14:04 Найти цитируемый пост)
babutta, что-то я действительно туплю. у меня тоже не получается решить это без каких либо извратов.

Код

            Element el = (Element)listBox1.SelectedItem;
            el.Name = "new elem";
            listBox1.Items[listBox1.SelectedIndex] = el;


что-то типа этого


че-то я сам не догадался просто еще раз присвоить ссылку на тот же объект - спасибо  smile 
пока что самый простой вариант наверное...
но вот только всвязи с этим у меня возникла пара вопросов:
  •  почему-то если заменить в предложенном варианте

    Код

    listBox1.Items[listBox1.SelectedIndex] = el;

    на
    Код

    listBox1.SelectedItem = el;

    то происходит то, что послужило причиной открытия этой темы - т.е. новое имя просто не отрисовывается...  smile 
    до этого я считал что listBox1.Items[listBox1.SelectedIndex] это тоже что и listBox1.SelectedItem  smile 
  •  если воспользоваться кодом
    Код

                Element el = (Element)listBox1.SelectedItem;
                el.Name = "new elem";
                listBox1.Items[listBox1.SelectedIndex] = el;

    то было бы зашибись... если б не один ексепшн:
    у меня в проге есть еще обработчик события изменения SelectedIndex для отрисовки св-ва Name выделенного элемента ListBox в Label...
    когда я добавил строку 
    Код

    listBox1.Items[listBox1.SelectedIndex] = el;

    т.е. туда же откуда только что взял объект для редактирования его же родимого и передаю снова...
    у меня после этого почему-то срабатывает событие изменение индекса SelectedIndexChanged (хотя изменялся объект с этим индексом в списке, но не индекс) и в обработчик ентого события ListBox попадает уже почему-то с SelectedIndex = -1  smile 
    а если не юзать обработчик изменения индекса, то все ок...
    в чем запарка подскажите плиз?

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0486 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.