Заполнение элементов в столбцах
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e)
{
........
listView1->Items[0]->SubItems->Add("444");
listView1->Items[0]->SubItems->Add("555");
listView1->Items[1]->SubItems->Add("666");
}
Выбор элемента таблицы:
Установить MultiSelect=false
Выбор мышкой только Items (11 22 33 ), но не SubItems (444 55 666)
Происхоит событие SelectedIndexChanged, но отсутствует в аргументах
информация какой индекс выбран.
listView1->FullRowSelect=true; // выбор всей строки
Выбор элемента не в первом столбце (SubItem) программируется
вручную.
Пример выбора – программирование события mouseup.
Items по прежнему встроенный выбор, Click мышкой приводит
к выбору клетки, которая окрашивается.
public ref class Form1 : public System::Windows::Forms::Form
{
public:
Form1(void)
{
InitializeComponent();
//
//TODO: добавьте код конструктора
//
}
int OldRow,OldCol,Col,Row; // выбранные строк и столбец
protected:
......
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e)
{
listView1->Columns->Add("Первая");
listView1->Columns->Add("Вторая");
listView1->Columns->Add("Третья");
listView1->Columns->Insert(1,"Четвертая");
listView1->Columns->RemoveAt(1);
listView1->Items->Add("11");
listView1->Items->Add("22");
listView1->Items->Add("33");
listView1->Items->Insert(1,"44");
listView1->Items->RemoveAt(1);
listView1->Items[0]->SubItems->Add("444");
listView1->Items[0]->SubItems->Add("555");
listView1->Items[1]->SubItems->Add("666");
OldRow=-1;
OldCol=-1;
}
Оклик на событие SelectedIndexChanged , когда выполняется переход
от одного выбранного Item к другому. Вызывается 2 раза.
private: System::Void listView1_SelectedIndexChanged(System::Object^ sender, System::EventArgs^ e)
{
int k;
if( listView1->SelectedItems->Count>0)
{
k=listView1->FocusedItem->Index;
if(OldRow>=0 && OldCol>0)
{
listView1->Items[OldRow]->SubItems[OldCol]->BackColor
=Color::FromArgb(255,255,255);
listView1->Items[OldRow]->SubItems[OldCol]->ForeColor
=Color::FromArgb(0,0,0);
}
OldRow=Row;
OldCol=Col;
Row=k;
Col=0;
}
}