Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > вопрос про Initialization component


Автор: PaZ1T1V 12.3.2008, 20:14
Доброго времени суток!

есть такой простецкий метод

Код


private void listView1_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e, int itemIndex, bool isSelected) 
        {
            toolStripStatusLabel2.Text = e.ToString(); 
        }



но етот метод надо определить в конструкторе, ина4е он не работает; определяю 

Код


this.listView1.ItemSelectionChanged += new System.Windows.Forms.ListViewItemSelectionChangedEventArgs(this.listView1_ItemSelectionChanged);



выдается ошибка 

Код


No overload for method 'ListViewItemSelectionChangedEventArgs' takes '1' arguments    



подскажите плиз, что я не так делаю. Или можно как нибудь етот вопрос решить по другому ?? 

ЗЫ Заранее спасибо!

Автор: QryStaL 12.3.2008, 21:23
Тебе надо определить метод с сигнатурой делегата

Код

public delegate void ListViewItemSelectionChangedEventHandler (
    Object sender,
    ListViewItemSelectionChangedEventArgs e
)


и добавить обработчик события

Код

this.listView1.ItemSelectionChanged += new ListViewItemSelectionChangedEventHandler(this.listView1_ItemSelectionChanged);

Автор: vponomarov 13.3.2008, 11:11
QryStaL абсолютно прав: обработчик события ListViewItemSelectionChangedEventHandler не принимает в качестве параметров itemIndex и isSelected. Их значения можно получить из свойств ListViewItemSelectionChangedEventArgs, т.е. объекта е.

Автор: PaZ1T1V 14.3.2008, 19:55
Цитата(QryStaL @ 12.3.2008,  21:23)
Тебе надо определить метод с сигнатурой делегата

Код

public delegate void ListViewItemSelectionChangedEventHandler (
    Object sender,
    ListViewItemSelectionChangedEventArgs e


и добавить обработчик события

Код

this.listView1.ItemSelectionChanged += new ListViewItemSelectionChangedEventHandler(this.listView1_ItemSelectionChanged);


определяю 
[code=csharp]

using System.IO;
using System.Collections;

public delegate void  ListViewItemSelectionChangedEventHandler (
    Object sender,
    ListViewItemSelectionChangedEventArgs e
);

namespace WindowsApplication1
{
  
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.listView1.ItemSelectionChanged += new ListViewItemSelectionChangedEventHandler(this.listView1_ItemSelectionChanged);
        }
[/code=csharp]

и вылетает ошибка

Код

Cannot implicitly convert type 'ListViewItemSelectionChangedEventHandler' to 'System.Windows.Forms.ListViewItemSelectionChangedEventHandler'    


понятно, что ето есть несогласование пространства имен, но, подскажите плиз, как с етим  бороться ? 

И, назрела такая просьба, расскажите плиз,  4то такое delegates и как с ними работать  в пару словах и по русски smile)) 

Автор: QryStaL 15.3.2008, 03:16
Сам делегат определять не надо, он уже есть в System.Windows.Forms

Код

// Подписка на событие:
this.listView1.ItemSelectionChanged += new ListViewItemSelectionChangedEventHandler(this.listView1_ItemSelectionChanged);


Код

private void listView1_ItemSelectionChanged(Object sender, ListViewItemSelectionChangedEventArgs e)
}
    // Здесь обрабатываешь событие
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)