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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как добавить новый item в listView? 
V
    Опции темы
oleeg
Дата 14.7.2008, 01:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Все доброго времени суток.
Вообщем, есть у нас listView, в который надо добавить итем. Создаем кнопку и на эту кнопку вешаем открытие формы, в которой  есть текстбокс и кнопка “добавить”. Вот код обработчика события это кнопки:
Код


private void buttonAddItem_Click(object sender, EventArgs e)
        {
            Output newOutput = new Output();            
            ListViewItem lstIt = new ListViewItem(textBoxItemName.Text);  
            newOutput.listView1.Items.Add(lstIt);
            this.Close();
            
            
        }



Output – это класс, в котором находиться listView, грубо говоря, потому что там находиться не только он. Ну вот. Только ничего не добавляеться. Почему? Может, Вы поможете? =) 
Написал коряво, но, наверное, Вы поймете. Заранее благодарю.

PM MAIL   Вверх
nikitao
Дата 14.7.2008, 02:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

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



Если я все верно понял то деагноз такой.

Вы создаете новый экземпляр Output и добавляете туда новый итем. Вам же надо добавлять его в ту форму что вызвала появление окна. Т е вы добавляете итем не в тот ListView , который вам нужен , а в совершенно новый , который потом уничтожается.

В любом случае такой дезайн является кривым и имхо требует срочной переработки.


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
Butsa
Дата 14.7.2008, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 6.6.2006
Где: Украина,Харьков

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



Код

private void buttonAddItem_Click(object sender, EventArgs e)
        { 
            ListView1.Items.Add(TextBoxItemName.Text);
            this.Close();
        }



Так ты обращаешься к  текущему экземпляру окна и с добавлением бу все чики пики 
PM MAIL ICQ   Вверх
oleeg
Дата 14.7.2008, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



не, обращаються так 
Код

class1.method1();

насколько я знаю.
а тут напрямую
нужно что-то типа 
Код

newOutput.ListView1.Items.Add(textbox1.Text);

только как?

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


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

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



Елки палки. Я же вам сказал. Вы не туда обращаетесь. Вы обращаетесь к новому обьекту т е к новому ListView , а надо обращаться к старому( который у вас отображается ) smile 


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
oleeg
Дата 14.7.2008, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(nikitao @ 14.7.2008,  13:33)
Елки палки. Я же вам сказал. Вы не туда обращаетесь. Вы обращаетесь к новому обьекту т е к новому ListView , а надо обращаться к старому( который у вас отображается ) smile

Да  это я понял. КАК К НЕМУ ОБРАТИТЬСЯ?

Добавлено через 6 минут и 56 секунд

это форма, где добавляем итем
Код

 // в этой форме будем добавлять новый итем
    public partial class FormForAddItemInOutPut : Form
    {

        public Output output;
        public FormForAddItemInOutPut(Output _output)
        {
            InitializeComponent();
            output = _output;
        }
        // добавление нового ListViewItem
        private void buttonAddItem_Click(object sender, EventArgs e)
        {
            
            ListViewItem lstIt = new ListViewItem(textBoxItemName.Text);
            output.listView1.Items.Add(lstIt);
            output.ShowDialog();
            this.Close();

        }
        
    }
}






Код

// добавление итема в listView
        private void buttonAddItemInListView_Click(object sender, EventArgs e)
        {
            // в параметрах нужно задать наш класс Output
            Output ourOutput = new Output();
            // не пашет OMG
            FormForAddItemInOutPut newFrmAddItem = new FormForAddItemInOutPut(ourOutput);
            newFrmAddItem.ShowDialog();
                        

        }

как теперь вызвать метод создания формы, указав в качестве параметра наш класс output?
Причем, если в форму FormForAddItemInOutPut  добавить output.ShowDialog();, то показываеться Форма с добавленным итемом, что, в принципе и должно быть.
Прошу помочь =)
PM MAIL   Вверх
nikitao
Дата 14.7.2008, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

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



Код

// добавление итема в listView
        string _result="";
        public string GetNewItem()
        {
           return _result;
         }
        private void buttonAddItemInListView_Click(object sender, EventArgs e)
        {
           _resutl=      textBoxItemName.Text;         
           DiaologResult = DialogResult.Ok;
        }



Код

// добавление итема в listView
        private void buttonAddItemInListView_Click(object sender, EventArgs e)
        {
           FormForAddItemInOutPut newFrmAddItem = new FormForAddItemInOutPut()
           if ( newFrmAddItem.ShowDialog()== DialogResult.Ok)
           {
                output.listView1.Items.Add(newFrmAddItem.getNewitem());
            }
        }


Что то в этом роде.


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
oleeg
  Дата 14.7.2008, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



делаю так. в форме, в которой содержиться текстовое поле и кнопка, добавляю 
Код

public string result = "";

потом в обработчике для клика кнопки пишу
Код

 private void buttonAddItem_Click(object sender, EventArgs e)
        {
            result = textBoxItemName.Text;
            this.Close();
        }



далее в обработчике кнопки главной формы пишу

Код

private void buttonAddItemInListView_Click(object sender, EventArgs e)
        {
            
            FormForAddItemInOutPut newFrmAddItem = new FormForAddItemInOutPut();

            if (newFrmAddItem.ShowDialog() == DialogResult.OK)
            {
                ListViewItem lstIT = new ListViewItem(newFrmAddItem.result);
                listView1.Items.Add(lstIT);
            }

        }


и нифига не работает! в чем может быть дело? никак допереть не могу.
А задание такое. Есть listView, в него надо просто добавить итем )

Добавлено через 9 минут и 58 секунд
Вообщем, все, я сделал это) Главное, что сам.
делаеться также, как и в предыдущем посте, но только вместо 
Код

if (newFrmAddItem.ShowDialog() == DialogResult.OK)


пишем
Код

newFrmAddItem.ShowDialog();

всем спасибо за ответы. Очень хороший форум =)
PM MAIL   Вверх
nikitao
Дата 14.7.2008, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

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



oleeg,  вы убрали из того , что я вам написал инкапсуляцию , что очень плохо. Кроме того лучше писать именно

Код

if (newFrmAddItem.ShowDialog() == DialogResult.OK)


Потому что вы даете возможность пользователю отменить ввод нового итема. Но тогда естественно вместо

Код

private void buttonAddItem_Click(object sender, EventArgs e)
        {
            result = textBoxItemName.Text;
            this.Close();
        }


надо писать 
Код

private void buttonAddItem_Click(object sender, EventArgs e)
        {
            result = textBoxItemName.Text;
            DialogResult= DialogResult.OK
        }


ЗЫ  И пометьте тему как решенную , если не сложно smile

Добавлено через 1 минуту и 42 секунды
Цитата(oleeg @  14.7.2008,  21:11 Найти цитируемый пост)

всем спасибо за ответы. Очень хороший форум =) 


Да. Форум хороший.....но когда то был еще лучше имхо ))))

Это сообщение отредактировал(а) nikitao - 14.7.2008, 20:35


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
Idsa
Дата 14.7.2008, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

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



Цитата(nikitao @  15.7.2008,  00:34 Найти цитируемый пост)
но когда то был еще лучше

 smile Да... сейчас .NET раздел уже практически не посещают mr.Duda, tol05, Mymik...


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
nikitao
Дата 14.7.2008, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

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



Еще Exception забыл  smile  да я вообще не про .NET говорил , а вообще про Винград ( года 3 назад)


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
oleeg
Дата 15.7.2008, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



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

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


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

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


 




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


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

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